/* Dette script er bygget op omkring en række funktioner. Funktionerne og deres indbyrdes samspil
styres af switchen allernederst i scriptet, der agerer på baggrund af $perform...
-- Lasse Steensgaard, xls@it-c.dk, efterår 2002 --
*/
function head ($js) {
echo "\n\n
\n\n
Web Publishing with Databases
\n";
if ($js == "js") {
echo "\n";
$onload = "onLoad=focus_onload();";
} else {
$onload = "";
}
// langt det meste af nedenstående echo er taget fra IT-Cs standard-sider...
echo "
Problem sets are introduced at the lectures on Wednesday afternoons and must be handed
in below on the following Wednesday no later than noon, 12:00 a.m., sharp!
Comments and scores are announced in CourseGrader (CG) no later than the following Tuesday.
Please fill in the textfields below and press 'Hand-in'. This action is irreversible.
";
foot();
}
function example () {
head("");
echo "
An example of a readable hand-in
\n
Always make sure that nobody, even your low-brow instructors, will ever be in doubt which chunks
of code correspond to which files, which answers to which questions, etc.
The below is an example of a nice and readable hand-in:
\n\n";
// $example kaldes nedenfor i echo...
$example = "Fornavn Efternavn\nE-mail\n\nOPGAVE Opgavesætnummer.opgavenummer
\nLINK: http://www.it-c.dk/~login/W2/opgave_url\n\nKILDEKODE:\nher kommer kildekoden\n
\n--------------------------------------------------------------------------------\n
\n...dette gentages så for hver opgave, dog ikke navn og e-mail mere end een gang. Eksempel:\n
\n--------------------------------------------------------------------------------\n\n\nJakob Tholle\njth@it-c.dk\n
\nOPGAVE: 1.1\nLINK: http://www.it-c.dk/~jth/W2/index.html\n\nKILDEKODE:\n
\n\n \n \n Home of Mickey Mouse\n \n
\n \n\n Welcome to my webpage' said \$firstname \$lastname!\";\n ?>\n
\n \n";
echo "\n\n
back to hand-in page";
foot();
}
function insert ( $navn, $email, $password, $ass_teacher, $set_no, $url, $code ) {
include "functions.inc";
// krypterede passwords er gode passwords :o)
$salt = "WQ";
$pw= crypt($password, $salt);
// fejlmeddelelser samles op i $errare, mens forekomsten af fejl registreres i $errare_yes
$errare = "";
if (empty($navn) == true) {
$errare = $errare . "
";
$errare_yes = "yes";
}
// er der så fejl? hvis ja, afsted med fejlmeddelse, samt head(), foot() og exit!
if (empty($errare_yes) == false) {
head("");
$errare = "
ERROR: your input was incomplete or incorrect with regards to:
" . $errare .
"
Please go back and complete the hand-in!
";
echo $errare;
foot();
exit;
}
// OK, indtastningen er altså valideret og godkendt
// så sætter vi et par cookies for brugervenlighedens skyld, så ikke brugeren skal indtaste navn, email og url igen og igen
// de udløber alle efter 15 dage, altså kan man springe en ugentlig afevering over uden at miste cookie-hjælpen...
setcookie ("w2_navn_cookie", "$navn", time() +1296000);
setcookie ("w2_email_cookie", "$email", time() +1296000);
setcookie ("w2_url_cookie", "$url", time() +1296000);
head("");
// jeg etablerer et par praktiske variable, for at undgå at skrive deres indhold igen og igen...
$ok = " OK\n";
$error = "ERROR - something went wrong."
. " Unless writing to database went OK, please go back and try again!\n";
$space = " ";
// så går vi i gang med trin 1 ud af 3, skrivning til databasen, det vigtigste trin!
echo "\n\n
\n
Writing to database: " . $space . "insert into ..." . $space;
$date = date( "Y-m-d, H:i:s" );
$query = "insert into afleverede_opgaver values (NULL, '$navn', '$email', '$ass_teacher', '$set_no', '$code', '$date', '$url', 0)";
if (mysql_insert($query) == true) {
echo $ok;
} else {
// denne fejl er så graverende, at scriptet afsluttes emd foot() og exit;!
echo $error;
foot();
exit;
}
// trin 2 ud af 3, det afleverede tilsendes for en sikkerheds skyld til hjælpelæreren på mail
echo "\n
Forwarding hand-in by email to $ass_teacher" . $space;
$code = str_replace ("\t", " ", $code);
$subject = "W2 hand-in";
$content = "se også http://www.it-c.dk/courses/W2/E2002/hand_in.php?perform=output \n---------------------------------------\n\n$navn, $email \nhjælpelærer: $ass_teacher \n\nopgavesæt $set_no \nurl: $url \n\n-------------------------- \nkode: \n\n$code \n";
$header = "From: W2 hand-in - $navn - $email<$email>\n";
if (mail($ass_teacher, $subject, $content, $header)) {
echo $ok;
} else {
// denne fejl er ikke mere graverende, end at scriptet kører videre med fejlmeddelelse til brugeren
echo $error;
}
// trin 3 ud af 3, bekræftelse for modtagelse sendes til den studerende per mail
echo "\n
Forwarding confirmation email to $navn" . $space;
$subject = "W2 hand-in corfirmation";
$content = "This is an automatically generated mail, DO NOT REPLY! \n\nYour hand-in of problem set no. $set_no on the course Web Publishing with Databases has been stored succesfully handed in. \nComments and scores are announced in Coursegrader Tuesday next week. \n\n:o) \n";
$header = "From: W2 - no reply<>";
if (mail($email, $subject, $content, $header)) {
echo $ok;
} else {
// denne fejl er ikke mere graverende, end at scriptet kører videre med fejlmeddelelse til brugeren
echo $error;
}
// notits om aflevering i CourseGrader
echo "\n
\n\n
\nIMPORTANT: You must now go to CourseGrader and hand in your stuff once again. If you don't, your hand-in might not be evaluated. \nThe reason for this double hand-in is that we use CG for evaluating your hand-ins, but as this is an external webservice we cannot integrate the two in one...
\n\nLink to CourseGrader ";
foot();
}
function admin () {
// denne funktion tjekker adgangen til de afleverede besvarelser, kræver password, tjekker evt. session...
session_start();
if (session_is_registered("w2_session")) {
header("Location: index.php?perform=output");
} else {
head ("js");
echo "";
foot();
}
}
function login ($pw) {
// denne funktion validerer det angivne admin_password, afviser eller sætter session-variable m.m.
$salt = "XC";
$pw= crypt($pw, $salt);
if ($pw == "XCK2NmjJFStZs") {
global $w2_session;
session_register("w2_session");
$w2_session="ok";
header("Location: index.php?perform=output");
} else {
head("");
echo "
";
foot();
exit;
}
}
function check_session () {
// denne funktion kaldes fra toppen af alle admin-sider og sikrer er brugeren er logget ind
session_start();
if (session_is_registered("w2_session")) {
return true;
} else {
header("Location: index.php?perform=admin");
exit;
}
}
function head2 () {
echo "W2-admin
";
}
// exit;
}
/* Den store switch, der binder alle enkeltdelene i scriptet samen */
switch( $perform ) {
case "show": show( ); break;
case "insert": insert( $navn, $email, $password, $ass_teacher, $set_no, $url, $code ); break;
case "example": example(); break;
case "output": output_list("opgave_nr desc, navn asc", ""); break;
case "output_list": output_list($sort, $where); break;
case "output_single": output_single($id); break;
case "admin": admin(); break;
case "login": login($password); break;
default: show(); break;
}
?>