Aufgabenzettel 5 Perl und PHP by ojp13483

VIEWS: 6 PAGES: 3

									Prof. Dr. B. Thalheim                                                         u
                                                        Skriptprogrammierung f¨ r Webanwendungen
Lehrstuhl Datenbank- und Informationssysteme                               Wintersemester 2002/03


                           Aufgabenzettel 5: Perl und PHP

  1. Dateien auf Webserver herauf- und herunterladen
                                           o
     Erstellen Sie ein Formular samt zugeh¨ rigem Skript, mit dessen Hilfe Dateien auf einen
                                 o
     Webserver geladen werden k¨ nnen.
                    a             ¨        ¨
     Geben Sie zus¨ tzlich einen Uberblick uber bereits hochgeladenen Dateien und bieten Sie
     diese zum Download an.
                    u                                                               u
     Die Dateien m¨ ssen in einem im Skript definierten Pfad gespeichert werden. Es d¨ rfen nur
     Dateien aus diesem Pfad zum Download angeboten werden.
                        o
     Erstellen Sie die L¨ sung mittels Perl oder PHP.
                                                                                       [5 Punkte]
  2. Sessionmanagement
     Da das HTT-Protokoll keine persistenten Verbindungen zwischen Client und Server kent, muß
     zu Hilfsmitteln gegriffen werden, um Anfragen einem bestimmten Nutzer zuzuordnen. D.h.
     um eine dauerhafte Verbindung zu simulieren.
     Dies kann z.B. mit Cookies erreicht werden. Anhand der inviduellen Cookies kann ein Nutzer
     wiedererkannt werden. Da Cookies allerdings nicht von jedem Nutzer akzeptiert werden, sind
                                  u
     sie nur ein probates Mittel f¨ r ein Sessionmanagement.
     Erstellen Sie ein minimales Session-Mangement auf Basis der CGI-Request-Parameter.
                                                                            u
     Zwischen den Skripten soll der Austausch einer einzigen Session-ID gen¨ gen, um mit ihrer
     Hilfe beliebige Daten zum Nutzer (resp. der Sitzung) auf dem Server abzulegen und wieder
     aufzurufen.
                               o                                                      a
     Implementieren Sie ihre L¨ sung anhand zweier Skripte, von denen eines frei w¨ hlbare Da-
                             u                 ¨
     ten (am Besten als Schl¨ ssel-Wert-Paare) uber die Sitzung speichern kann und das andere
                                                                               u
     alle zuvor erfaßten Daten der Sitzung anzeigt. (Das zweite Skript darf nat¨ rlich nur mit der
     Session-ID aufgerufen werden!)
                        o
     Erstellen Sie die L¨ sung mittels Perl oder PHP.
      u         o               o                                                          u
     F¨ r eine L¨ sung in PHP k¨ nnen die bereitgestellten Automatismen verwendet werden. F¨ r
     die Speicherung der Sessiondaten sind eigene Funktionen in PHP zu registrieren. Damit
             o
     dies m¨ glich ist, setzen sie mittels der Funktion ini set(<Konfig.-Variable>,
     <Wert>) die Variable “session.save handler” auf den Wert “user”.
                                                                                       [5 Punkte]
             ¨         ¨
  3. Zusatz fur nachgeruckte Studenten
     All die Studenten, die erst seit Aufgabenzettel 2 dabei sind, oder diejenigen die bisher etwas
                                o
     knapp bei Punkten sind, k¨ nnen sich Zusatzpunkte verdienen, in dem sie Aufgabe 1 und 2 in
     jeweils beiden Sprachen (d.h. PHP und Perl) implementieren.
                                        u                               o
     Es sind so also maximal 20 Punkte f¨ r die beiden ersten Aufgaben m¨ glich!
4. Weihnachtsaufgabe
                                   u
  Auf Grund betriebsbedingter K¨ ndigungen, mußten auch ein paar der PHP-Elfen ihren
                               a               ¨
  Schreibtisch am Nordpol r¨ umen. Aus Gnatz uber die Entlassung so kurz vor Weihnachten,
                                 u
  haben sie einige PHP-Skripte f¨ r die Geschenkeverwaltung des Weihnachtsmann einfach so
                 o
  im Internet ver¨ ffentlicht.
       o                             u
  Sie k¨ nnen nun auf zwei Wegen f¨ r mehr Geschenke unter ihrem Weihnachtsbaum sorgen.
  Zu ersteinmal sollte sie das nachfolgende Code-Fragment genauer unter die Lupe nehmen.
                                          o                      o
  Sollten Sie Fehler und Manipulationsm¨ glichkeiten finden, k¨ nnen Sie diesen nun entweder
  dem Weihnachtsmann mitteilen und hoffen, daß er sich erkenntlich zeigt. Oder sie nutzen
                                               a
  einfach ihr Wissen und tragen sich selbst zus¨ tzliche Geschenke in der Datenbank ein.
                                  ¨                             ¨                              u
  Auf jeden Fall sollten Sie ihre Uberlegungen detailiert ihrem Ubungsleiter mitteilen, der daf¨ r
                                            o
  bereitwillig Punkte verteilen wird. Sie k¨ nnen sich ebenfalls Punkte erarbeiten, wenn Sie
    o             a                                    o
  L¨ sungsvorschl¨ ge einbringen, die die Einbruchsm¨ glichkeiten erfolgreich verhindern.
  Da der eine oder andere von Ihnen mehr praktisch veranlagt ist, oder einfach nur seine Ideen
          o
  testen m¨ chte, kann er dies unter der folgenden URL tun:
  http://cumin.informatik.tu-cottbus.de/geschenke.php
  Die Option magic quotes gpc ist in PHP deaktiviert.
                        ¨     u
  (Es sollte eigentlich uberfl¨ ssig sein Sie darauf hinzuweisen, daß sich die Erlaubnis zum
  Hacken nur auf diese Aufgabe und dieses Skript erstreckt. Der Weihnachtsmann wird sehr
                                                                                  o
  ungehalten auf all diejenigen reagieren, die sich in ihrem Eifer nicht bremsen k¨ nnen.)
  Code-Fragment der Geschenkeverwaltung:

    $login = $_POST[’login’];
    $pass = $_POST[’password’];

    $sql = "SELECT name FROM xm_login WHERE login=’$login’ AND password=’$pass’";
    $res = sybase_query($sql, $dbh);

    if ($res){
      $row = sybase_fetch_row($res);
      $user = $row[0];
    }

    // HTML-Code

    if ($user) {
      if ($_POST[’gform’]){
        $kind     = $_POST[’kind’];
        $geschenk = $_POST[’geschenk’];

        $sql = "SELECT id, geschenke FROM xm_kinder WHERE name = ’$kind’";
        $res = sybase_query($sql, $dbh);

        if (sybase_num_rows($res) == 0){
          $sql = "INSERT INTO xm_kinder (name) VALUES (’$kind’)";
          $res = sybase_query($sql, $dbh);

            $sql = "SELECT id, geschenke FROM xm_kinder WHERE name = ’$kind’";
            $res = sybase_query($sql, $dbh);
        }

        if (sybase_num_rows($res) > 0){
          // Geschenk speichern
          $row = sybase_fetch_row($res);
                   if ($row[1] < 5){
                     $id = $row[0];

                    $sql = "INSERT INTO xm_geschenke VALUES ($id, ’$geschenk’)";
                    sybase_query($sql, $dbh);

                    $sql = "UPDATE xm_kinder SET geschenke=geschenke+1 WHERE id = $id";
                    sybase_query($sql, $dbh);

                    $last = "Geschenk fuer $kind gespeichert!";

                   }else{
                     $last = "$kind hat bereits seine 5 Geschenke!";
                   }
               }

           } elseif ($_POST[’rform’]){
              // Name eines Kindes aktualisieren
              $old = $_POST[’nold’];
              $new = $_POST[’nnew’];

               $sql = "UPDATE xm_kinder SET name = ’$new’ WHERE name = ’$old’";
               $res = sybase_query($sql, $dbh);
           }

           // HTML-Ausgabe
       }


                                                                                    [5 Punkte]




Abgabemodus: schriftlich bzw. ausgedruckt und alle Programme bzw. Skripte als Email im ASCII-
     Textformat (text/plain) an Thomas.Kobienia@Informatik.TU-Cottbus.DE.

                    a                                   ¨
Abgabetermin: bis sp¨ testens Montag, 13.01.03 (vor der Ubung)

                          u                    a
Bearbeitungshinweis: Es m¨ ssen alle Aufgabenbl¨ tter bearbeitet und 50% der ausgewiesenen
     Punkte erreicht werden.

                                                                               Viel Erfolg!

								
To top