KJG Webmaster/ Webmistress Januar 2001 CGI – einfach PHP Dynamik bis zur DB-Interaktion Marc Schanne 1 CGI Möglichkeiten Das Common Gateway Interface (CGI) ermöglicht den Entwurf von interaktiven, benutzergesteuerten Web-Applikationen. Der WWW-Server ruft auf Serverseite ein CGI-Script auf und liefert die Ausgabe (HTML) zurück an den Browser. Parameterübergabe mit HTML-Formularen. Ein CGI-Script ist ein normales Programm. © Mit CGI ist es möglich Web-Inhalte dynamisch (z.B. 2000-2001, aus Datenbanken, etc.) zusammenzustellen und FZI on the fly zu erzeugen. HTML-Seiten Forschungsz entrum Informatik, Karlsruhe Kapitel 3 Kurzform Marc Schanne 2 KJG Webmaster/ Webmistress Januar 2001 Client/Server-Interaktion Marc Schanne 3 CGI Aufruf Der Aufruf eines CGI-Scripts unterscheidet die beiden grundlegenden HTTP-Übertragungsmöglichkeiten: GET Parameterübergabe in einem String direkt hinter der URL, die das CGI-Script referenziert (mit ? angehängt). Dieser String wird in einer Umgebungsvariable (QUERY_STRING) abgelegt. Beispiel: <A HREF= /cgi-bin/program.pl?user=test& attr=true >CGI Programm</A> © POST 2000-2001, Formulardaten werden in der Standardeingabe an das CGIScript FZI übertragen. Beispiel: Forschungsz <FORM ACTION= /cgi-bin/program.pl METHOD= post > entrum Informatik, Karlsruhe Kapitel 3 Kurzform Marc Schanne 4 KJG Webmaster/ Webmistress Januar 2001 PHP Überblick PHP - Hypertext Preprozessor Serverseitige Software zur Erstellung von dynamischen Web-Seiten PHP-Befehle werden in HTML-Seite eingebettet Einsatz: Bearbeitung von Formularen Zusammenarbeit mit Datenbank-Systemen (insbesondere MySQL) Marc Schanne 5 PHP Einführung PHP-Programme werden auf dem Web-Server ausgeführt: Zugriff auf Datenbanken Textdateien Leicht erlernbar Einsetzbar mit fast allen Web-Servern Kostenlos © Verweise auf weiterführende Literatur gibt es in 2000-2001, diesem Kursabschnitt nicht. Das auf der CD FZI beigefügte PHP Handbuch (im PDF-Format) deckt Forschungsz alle Bereiche ab und ist als Referenz geeignet. entrum Informatik, Karlsruhe Kapitel 3 Kurzform Marc Schanne 6 KJG Webmaster/ Webmistress Januar 2001 PHP Einführung <html> <body> <?php echo "Hej Du!"; ?> <? echo "oder ohne XML auch so"; ?> </body> </html> Mit einem beliebigen Editor erstellbar Datei-Endung: .php, .php3 Marc Schanne 7 Alternative Syntaxformen Statt der geschweiften Klammern kann auch bei if, switch und for die Schreibweise mit Doppelpunkt und endif, endswitch, endfor gewählt werden. Beide Syntaxformen sind beliebig austauschbar. Die gesprächigere 2. Variante empfiehlt sich insbesondere wenn die PHP-Kontrollstruktur sich über mehrere Blöcke erstreckt. © 2000-2001, FZI Forschungsz entrum Informatik, Karlsruhe Kapitel 3 Kurzform Marc Schanne 8 KJG Webmaster/ Webmistress Januar 2001 PHP Funktionen Zahlreiche vordefinierte Funktionen Eigene Funktionen Vorteile: Modularisierung von Programmen Mehrfachverwendung Definition einer Funktion: function Name () { Anweisungen } Definition von Funktionen im HEAD-Bereich Tag: <?php ?> Anders als Variablen sind Funktionsnamen nicht casesensitiv! Marc Schanne 9 Globale und lokale Variablen Variablen werden nach ihrem Gültigkeitsbereich unterschieden. Es gibt lokale Variablen und globale Variablen. © 2000-2001, FZI Forschungsz entrum Informatik, Karlsruhe Kapitel 3 Kurzform Marc Schanne 10 KJG Webmaster/ Webmistress Januar 2001 Globale Variablen Globale Variablen außerhalb der Funktionen definiert nur außerhalb der Funktionen sichtbar verwendbar innerhalb von Funktionen durch das Schlüsselwort global oder durch Parameterübergabe. Variablen, die ihren Ursprung außerhalb des Programmes haben (z.B. Formularfelder) sind immer global. Marc Schanne 11 Lokale Variablen Lokale Variablen: werden innerhalb einer Funktion definiert. sind nur in dieser Funktion sichtbar. Ein Parameter, der als Kopie an eine Funktion übergeben wird, ist dort lokal. © 2000-2001, FZI Forschungsz entrum Informatik, Karlsruhe Kapitel 3 Kurzform Marc Schanne 12 KJG Webmaster/ Webmistress Januar 2001 PHP und HTML-Formulare PHP ermöglicht eine einfache Bearbeitung von HTML-Formularen Bei der Formular-Definition kann dem Attribut action eine PHP-Datei zugewiesen werden. Beim submit wird die Ausführung der angegebenen PHP-Seite angestoßen. Marc Schanne 13 HTML-Formular und PHP Aus dem HTML-Formular wird die PHP-Datei angestoßen. Die Namen der Input-Felder werden als Variablen-Bezeichner verwendet. <html><body> Zwei Zahlen eingeben und abschicken.<BR> <form action="test.php" method="post"> Wert 1: <input name="w1"><p> Wert 2: <input name="w2"><p> <input type="submit"><input type="reset"> </form></body></html> © 2000-2001, <html><body><?php $erg = $w1 + $w2; FZI echo "Die Summe von ?></body></html> Forschungsz entrum Informatik, Karlsruhe $w1 und $w2 ist $erg"; Marc Schanne Kapitel 3 Kurzform 14 KJG Webmaster/ Webmistress Januar 2001 Funktionen und Formulare Aus einem Formular stammende Variablen sind global. Werden die Variablen innerhalb einer Funktion verwendet, müssen diese als global deklariert werden. Marc Schanne 15 PHP Dateizugriff Mit PHP können leicht Dateizugriffe auf Textdateien durchgeführt werden. PHP kennt Funktionen zum Öffnen, Lesen, Schreiben und Schließen von Textdateien. © 2000-2001, FZI Forschungsz entrum Informatik, Karlsruhe Kapitel 3 Kurzform Marc Schanne 16 KJG Webmaster/ Webmistress Januar 2001 PHP Datenbankzugriff PHP muss mit entsprechender DB-Option installiert sein Jede DB hat ihre eigene Option mit eigener Schnittstelle (siehe DB-Doku.) Für MySQL ist der DB-Treiber in den PHP-Interpreter integriert. DB-Anbindung ist mehrstufiger Prozess DB-Verbindung aufbauen Datenbank auswählen SQL-Befehl ausführen Ergebnisreihen abrufen (bei SELECT) DB-Verbindung abbauen Marc Schanne 17 Verbindungsaufbau Zunächst muss aus der PHP-Datei heraus eine Verbindung zum DB-Server hergestellt werden: $conn = mysql_connect( "host:port", "username", "passwd"); Der Rückgabewert $connection wird zum weiteren Ansprechen der Verbindung benötigt. Im Fehlerfall false. © Die Auswahl der eigentlichen Datenbank mit: 2000-2001, $db = mysql_select_db("database", $conn); FZIeinem vorbereiteten SQL-Befehl ($sql): Zugriff mit Forschungsz $res = mysql_db_query($db, $sql); entrum Informatik, Karlsruhe Kapitel 3 Kurzform Marc Schanne 18