Are you sure about deleting this course? This action can not be reversed!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Download.php b/Download.php
index 71b49bd..987a485 100644
--- a/Download.php
+++ b/Download.php
@@ -23,7 +23,7 @@ $time = time();
if ( (isset($_SESSION["user_student_id"]) && strpos($file, $_SESSION["user_student_id"])) || $_SESSION['user_type'] == "Lecturer" || $_SESSION['user_type'] == "TA") {
// 发送文件头部
header("Content-type: $type");
- header("Content-Disposition: attachment;filename=$filename");
+ header('Content-Disposition: attachment;filename="'.urldecode($filename).'"');
header("Content-Transfer-Encoding: binary");
header('Pragma: no-cache');
header('Expires: 0');
diff --git a/Header.php b/Header.php
index 95dd1c2..6899665 100644
--- a/Header.php
+++ b/Header.php
@@ -18,8 +18,8 @@ if (mysqli_connect_errno()) {
-
-
+
+
@@ -29,7 +29,7 @@ if (mysqli_connect_errno()) {
-
+
diff --git a/README.md b/README.md
index 189b8dd..c09b487 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,41 @@ Our mission is to make the experience of submitting assignments great for tens o
# Installation Instructions
-Check file INSTALLATION.md (TBA) for details.
+
+## Hui's steps
+
+I spent about two hours on installing LRR to a bare, remote Ubuntu server (Ubuntu 20.04 LTS).
+
+LRR needs Apache and MySQL to run. I followed [How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-20-04) to set up these server applications.
+
+LRR uses a database called `lrr`. I need to export existing `lrr` to a plain text file (including many sql commands) and import that text file to the newly created `lrr` database on the new server.
+The command for exporting the database is `mysqldump -u mnc -p lrr > lrr_database_dump.txt`.
+The command for importing is `mysql -u mnc -p lrr < lrr_database_dump.txt`. Read [How to Import and Export MySQL Databases in Linux](https://phoenixnap.com/kb/import-and-export-mysql-database) for more detail.
+
+LRR also needs to store assignment submissions. We store them in a folder called `../../lrr_submission`. Note that `lrr_submission` is two levels above the project folder (where many PHP files reside). I copied this folder from the existing one. I think it is also OK if you create an empty folder.
+We need to set a proper owner and accessibility for `lrr_submission` using the following two commands:
+`sudo chown -R www-data:www-data lrr_submission` and `sudo chmod -R g+rw lrr_submission`. Also, remember to change the user name and password in `lrr_submission//KeepItSafe.txt` for the database connection.
+
+The above steps are preparation work. Now we could clone the LRR's repository to `/var/www/html/`.
+Rename LRR to lrr. Change the owner of lrr: `sudo chown -R $USER:$USER /var/www/lrr`. Edit apache configure file: `sudo nano /etc/apache2/sites-available/lrr.conf`.
+
+
+
+ ServerName lrr
+ ServerAlias www.lrr.com
+ ServerAdmin webmaster@localhost
+ DocumentRoot /var/www/html/lrr
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
+
+
+Enable the site lrr: `sudo a2ensite lrr`. Restart the apache server: `sudo systemctl reload apache2`.
+Visit the LRR application by entering this URL in a web browser: http://121.4.94.30/.
+
+
+## Enock's steps
+
+Enock has made a tutorial about how he deployed LRR to a remote server (http://lanlab.org/course/2021s/spm/PuTTY-Server.txt).
@@ -120,7 +154,12 @@ To submit bug reports or improvement ideas, please ask Hui [lanhui at zjnu.edu.c
## Frequently Asked Questions
-Check FAQ.md (TBA) for details.
+
+1. Q: The web application's front page does not show properly, i.e., elements are not well aligned.
+ A: You missed two folders `css` and `font-awesome`. These folders include third-party js or css files and therefore are not included.
+
+1. Q: What if I do not have any information about the `lrr` database?
+ A: You could use `lrr(1).sql` or `lrr_database.sql`. It seems `lrr(1).sql` is more complete.
diff --git a/Readme.txt b/Readme.txt
index 8ed0306..b28306e 100644
--- a/Readme.txt
+++ b/Readme.txt
@@ -1,5 +1,5 @@
-* Student Regisreation Process is now simplyfied, Student Passport/ID checking process skipped as there is no where find that information currenly. The system now checks Student Passport / National ID from users tables insead of verifying from school databse.
+* Student Registration Process is now simplified, Student Passport/ID checking process skipped as there is nowhere find that information currently. The system now checks Student Passport / National ID from users’ tables instead of verifying from school database.
-*
\ No newline at end of file
+*
diff --git a/Script.php b/Script.php
index 851323e..d1921c7 100644
--- a/Script.php
+++ b/Script.php
@@ -414,7 +414,7 @@ if (!empty($_POST["frm_uploadlab"])) {
$deadline = $deadlinedate." ".$deadlinetime;
- $date = date("Y-m-d H:i");
+ $date = date("Y-m-d H:i:s");
@@ -537,7 +537,7 @@ if (!empty($_POST["frm_submitlab"])) {
$url = mysqli_real_escape_string($con, $_POST["url"]);
$deadline = $deadlinedate." ".$deadlinetime;
- $date = date("Y-m-d H:i");
+ $date = date("Y-m-d H:i:s");
// GET UPLOADED FILES
$labName = mysqli_query($con,"SELECT * FROM `lab_reports_table` WHERE Lab_Report_ID=$lab_id");
@@ -633,17 +633,17 @@ if (!empty($_POST["frm_submitlab"])) {
$targetfile4 = "";
if(strlen($_FILES['attachment1']['name']) > 2 ) { // why greater than 2???
- $targetfile = "/".$student_id."/".$url."/".$lab_name."/".$_FILES['attachment1']['name'];
+ $targetfile = "/".$student_id."/".$url."/".$lab_name."/".rawurlencode($_FILES['attachment1']['name']);
}
if(strlen($_FILES['attachment2']['name']) > 2 ) {
- $targetfile2 = "/".$student_id."/".$url."/".$lab_name."/".$_FILES['attachment2']['name']; }
+ $targetfile2 = "/".$student_id."/".$url."/".$lab_name."/".rawurlencode($_FILES['attachment2']['name']); }
if(strlen($_FILES['attachment3']['name']) > 2 ) {
- $targetfile3 = "/".$student_id."/".$url."/".$lab_name."/".$_FILES['attachment3']['name'];}
+ $targetfile3 = "/".$student_id."/".$url."/".$lab_name."/".rawurlencode($_FILES['attachment3']['name']);}
if(strlen($_FILES['attachment4']['name']) > 2 ) {
- $targetfile4 = "/".$student_id."/".$url."/".$lab_name."/".$_FILES['attachment4']['name'];
+ $targetfile4 = "/".$student_id."/".$url."/".$lab_name."/".rawurlencode($_FILES['attachment4']['name']);
}
// When $group_id is not properly initialized, use integer 0 as its value.
@@ -729,7 +729,7 @@ if (!empty($_GET["savemarks"])) {
echo " Marks could not be greater than total";
return;
}
- $date= date("Y-m-d H:i");
+ $date= date("Y-m-d H:i:s");
$feedback=" @$date : ".$feedback;
$sql="UPDATE `lab_report_submissions` SET `Marks`='$marks',`Status`='$status',"
diff --git a/batch_insert.php b/batch_insert.php
index 00dad1b..20867af 100644
--- a/batch_insert.php
+++ b/batch_insert.php
@@ -36,13 +36,13 @@ $user = explode(' ', $source2);
for($index=0; $index < count($user); $index++) {
$result = mysqli_query($conn, "SELECT * FROM `students_data` WHERE Student_ID='$user[$index]'");
if (mysqli_num_rows($result) < 1) {
- if (! mysqli_query($conn, "REPLACE INTO `students_data`(`Student_ID`, `Passport_Number`) VALUES('$user[$index]', '')" ) ) {
+ if (! mysqli_query($conn, "REPLACE INTO `students_data`(`Student_ID`, `Passport_Number`) VALUES('$user[$index]', '')" ) ) {
echo "SQL Error: " . $sql_stmt . " " . mysqli_error($conn);
- } else {
- echo "