\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 "
IT-højskolen  >  Courses Spring 2002  >  Web Publishing with Databases

Web Publishing with Databases, autumn 2002 (DKM)

Course homepage Course Grader admin

"; } function foot () { echo "

Feel free to check out the source code of this hand-in script.


xls@it-c.dk
til "; } function show () { head("js"); echo "

Hand-in of problem sets.

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.
Your name:
Email: (for confirmation-email)
W2 password: (as stated by the teachers)
Assistant teacher is: \">Jakob
\">Lasse
Problem set:
URL: (your public_html/w2/... index-page for this problem set,
must start with 'http://'... It is your responsebility alone that this url really exists!)

Hand-in:

Please copy-paste your code into the below textarea. NB: Make sure to indicate which parts of the hand-in that correspond to the tasks given in the problem set (files, questions, etc.), example

NB: You must remember to hand-in in Course Grader, too!!
"; 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 . "
  • name
  • "; $errare_yes = "yes"; } if (ereg("^.+@.+\..+$", $email) == false) { $errare = $errare . "
  • email
  • "; $errare_yes = "yes"; } if ($pw != "WQNAI1jiAcBK2") { $errare = $errare . "
  • password
  • "; $errare_yes = "yes"; } if (empty($ass_teacher) == true) { $errare = $errare . "
  • assistant teacher
  • "; $errare_yes = "yes"; } if (empty($set_no) == true) { $errare = $errare . "
  • set no.
  • "; $errare_yes = "yes"; } if (ereg("^http://.+\..+$", $url) == false) { $errare = $errare . "
  • url
  • "; $errare_yes = "yes"; } if (empty($code) == true) { $errare = $errare . "
  • code-body
  • "; $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\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 "
    Indtast admin-password:
    "; 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 "

    ACCESS DENIED, go to admin-login or go away!

    "; 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

    Hand-in forside  |  admin-liste  |  mysql-admin

    "; } function output_list ($sort,$where) { // funktionen genererer en oversigt over samtlige afleverede opgaver check_session(); head2(); if (empty($sort) == true) { $sort = "opgave_nr desc, navn asc"; } if (empty($where) == true) { $where2 = "where opgave_nr>0"; } else { $where2 = "where opgave_nr=$where"; } echo "
    I denne søgning var where sat til \"$where2\". Vælg kun at se afleveringer for:

    "; include "functions.inc"; $query = "select * from afleverede_opgaver $where2 order by $sort"; $res = mysql_select($query); $rowcount = MySQL_NUMROWS($res); if ($rowcount < 1) { echo "

    Forespørgslen returnerede ingen rækker

    "; } else { echo ""; $i=0; while ($i < $rowcount) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; $i++; } echo "
    Opg. Studerende Dato Hj.lærer Vis kodeUrl
    " . MySQL_RESULT($res,$i,"opgave_nr") . "  " . MySQL_RESULT($res,$i,"navn") . "    " . MySQL_RESULT($res,$i,"timestamp") . "    " . MySQL_RESULT($res,$i,"ass_teacher") . "    vis kode    url: " . MySQL_RESULT($res,$i,"url") . "  
    "; } //exit; } function output_single ($id) { head2(); include "functions.inc"; $query = "select * from afleverede_opgaver where id=$id"; $res = mysql_select($query); $rowcount = MySQL_NUMROWS($res); if ($rowcount < 1) { echo "Forespørgslen returnerede ingen rækker, tjek ID"; } else { $navn = MySQL_RESULT($res,$i,"navn"); $kode = MySQL_RESULT($res,$i,"kode"); $opg = MySQL_RESULT($res,$i,"opgave_nr"); $url = "" . MySQL_RESULT($res,$i,"url") . ""; $tid = MySQL_RESULT($res,$i,"timestamp"); $hjlp = MySQL_RESULT($res,$i,"ass_teacher"); // der udskiftes tegn i koden, så den står ordentligt på skærmen og ikke havner i kildekoden til interfacet... $kode = str_replace ("<", "<", $kode); $kode = str_replace (">", ">", $kode); echo ""; echo "
    Opgave nr: $opg
    Navn: $navn
    Afleveret: $tid
    Hjælpelærer: $hjlp
    Url: $url

    Kode:

    -----------------------------------------\n
                      \n$kode 
    "; } // 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; } ?>