![]() |
Alle Support-Themen im Überblick |
Einführung in die PHP Programmierung |
| Einführung | |
PHP gehört zu den beliebtesten Programmiersprachen für Webprojekte. Die Sprache ist relativ einfach zu erlernen und führt schnell zu Erfolgserlebnissen. Mit PHP können Sie Suchfunktionen, Gestaltungsbausteine, Gästebücher, Foren oder ganze Contentmanagementsysteme programmieren. Wenn Sie mit den Grundlagen der Programmierung nicht vertraut sind und Ihnen Begriffe wie Variable oder Funktion nichts sagen, ist das Tutorial Programmierung für Mediengestalter eine gute Vorbereitung für diesen Kurs.
|
| Geschichte | |
Rasmus Lerdorf stellte die erste Version seiner Programmiersprache 1994 unter dem Namen Personal Home Page Tools (PHP Tools) vor. Die Software wurde als Open Source Projekt weiterentwickelt und kam im Mai 2000 in der Version 4.0 heraus. Im November 2001 überstieg die Zahl der PHP-nutzenden Domains die Millionengrenze.
|
| Was Sie brauchen, um PHP zu lernen | |
Um die folgenden Übungen nachzuvollziehen, benötigen Sie einen PHP-fähigen Webserver. Zum Beispiel den Apache-Webserver mit PHP-Modul. Die meisten Webhoster bieten in ihren Paketen PHP standardmäßig mit an, zum Teil sogar zusammen mit einer MySQL-Datenbank. Einige kostenlose PHP-fähige Webhostingangebote sind am Ende dieser Seite aufgeführt. Wenn Sie sich einen PHP-fähigen Webserver lokal auf Ihrem Computer installieren wollen, ist die OpenSource Lösung XAMPP von apachefriends empfehlenswert. XAMPP steht unter Linux und Windows zur Verfügung, eine Variate für Solaris und Mac OS X ist zur Zeit (Juni 2005) in Planung. Es enthält den Webserver Apache, die Datenbank MySQL und Module für die Skriptsprachen Perl und PHP.
|
| Wie PHP-Skripte funktionieren | |
PHP ist eine Skriptsprache, die vom Webserver interpretiert wird. D.h. der Webbrowser schickt eine Anfrage an eine Webseite, die PHP-Code enthält. Der Webserver lässt den in der Datei enthaltenen PHP-Code durch das PHP-Modul interpretieren und schickt das Ergebnis an den Webbrowser zurück.
|
| PHP-Code schreiben | |
Alternativ können Sie auch die folgenden Tags benutzen, um PHP-Anweisungen zu kennzeichnen:
<? ... ?> oder <script language="php"> ...</script> Der auszuführende PHP-Code kann direkt in den body-Bereich einer HTML-Seite eingefügt werden. Damit der Webserver den Code erkennen kann, werden die PHP Anweisungen mit dem Tag <?php ... ?> gekennzeichnet: <?php In eine HTML-Seite eingebunden würde der Code z.B. wie folgt aussehen: <head> Mit welcher Endung Ihre Datei gespeichert werden sollte, hängt von der Konfiguration des Webservers ab. Manche Server sind so konfiguriert, dass der PHP-Code unabhängig von der Dateiendung immer verarbeitet wird. In diesem Fall würde der PHP-Code ausgeführt, auch wenn Ihre Datei die Endung .html oder .htm hat.
In Ihrem Webbrowser müsste jetzt die Ausgabe "Hallo Welt" zu sehen sein.
Damit der Webserver die Datei korrekt verarbeitet, sollten Sie die Dateiendung .php und nicht etwa .html wählen.
Die Textausgabe lässt sich mit HTML-Tags bzw. CSS-Angaben auch formatieren: <?php
|
| Die Syntax | |
Kommentieren Sie Ihren Code entweder mit: // um eine einzelne Zeile auszukommentieren oder mit/* um mehrere
|
| Einfache Skripte | |
Für die untenstehenden Übungen wie Formularauswertung und MySQL-Datenbankanbindung machen wir uns zunächst mit ein paar einfachen PHP-Skripten vertraut. Die Beispiele geben einen Eindruck davon, was mit dieser Skriptsprache möglich ist. Mit der folgenden Anweisung gibt Ihnen der Server Informationen über die installierte PHP-Version aus. Neben der print-Anweisung gibt es auch die echo-Anweisung , um Inhalte im Browserfenster auszugeben. Die print-Anweisung liefert im Gegensatz zu echo allerdings die Rückgabewerte TRUE oder FALSE - je nach Erfolg. <?php
Geben Sie das aktuelle Datum im Browser aus. <?php In Ihrem Browser müsste jetzt eine Ausgabe wie beispielsweise "05.03.2005" erscheinen. Weitere Parameter von date() finden Sie im PHP-Handbuch unter http://www.php.net/manual/de/function.date.php
include 'fusszeile.php';
Variablen brauchen Sie, um Werte im Programmablauf zu speichern.
In diesem Beispiel wird zu einem Nettopreis die Mehrwertsteuer addiert. Weiter unten auf dieser Seite sehen Sie ein Skript, das Variablen aus einem Formular verarbeitet. <?php
$netto = 25; $mwst = 0.18; $summe = $netto + $netto * $mwst; print("Summe = ".$summe); /* Bei einem Nettopreis von EUR 25,- und einer Mehrwertsteuer von 18% beträgt der Bruttopreis EUR 29,50. */ ?> Hinweis für Programmierer: PHP erfordert bei Variablen keine explizite Typ-Definition. Nutzerdaten ermitteln <?php Dieses Skript ermittelt Nutzdaten wie IP-Adresse oder Browserversion. Damit könnten Sie Besucher mit veraltetem Webbrowser automatisch auf eine andere Seite umlenken. Bedingungen mit if else Mit Bedingungen steuern Sie den Programmablauf. In dem weiter unten stehenden Skript zur Formularauswertung wird z.B. mit einer Bedingung geprüft, ob bestimmte Formularfelder ausgefüllt wurden. Wenn ein benötigtes Formularfeld nicht ausgefüllt wurde, erhält der Anwender eine entsprechende Fehlermeldung.
Um den Ablauf eines Programms zu steuern, setzen Sie Kontrollstrukturen wie if, for oder switch ein. <?php
<?php Das break-Statement beendet die switch-case Anweisung, wenn eine Bedingung erfüllt ist. Fehlt break, würden auch die weiteren Anweisungen ausgeführt.
Aufgabe Geben Sie auf einer Webseite abhängig von der Tageszeit
die Sätze „Guten Morgen”, „Guten Tag” bzw. „Gute Nacht” aus. Verwenden Sie dazu die Date-Funktion.
|
| Weitere Beispiele für ausgewählte PHP-Funktionen | |
Ein Passwortschutz Mit dem folgenden Skript bauen Sie sich einen simplen Passwortschutz für eine Webseite. <html> Dann brauchen Sie ein Skript, das die Benutzereingabe auswertet. Dieses Skript bekommt den Dateinamen "geheimeSeite.php". Es leitet den Besucher weiter auf eine Downloadseite.Es gibt allerdings sichere Methoden, um Bereiche einer Website zu schützen. Wenn Sie Zugriff auf die Serverkonfiguration oder die .htaccess-Datei eines Verzeichnisses haben, sollten Sie damit arbeiten. <?php
String-funktionen Zeichenketten werden mit dem Punkt ( ".") verbunden. <?php substr schneidet einen Teil aus einem Text aus. print(substr("20.03.2005 16:31",0,10));
print(htmlentities("Vergrößerung"));
print(strlen("hallo!"));
Abhängig davon, ob sich eine Variable innerhalb einer Zeichenfolge in einfachen oder doppelten Anführungszeichen befindet, wird entweder der Variableninhalt oder der Variablenname ausgegeben. So führt der untenstehende Code zur Ausgabe: <?php Dateisystemfunktionen Mit der Funktion fopen() bereiten Sie eine Datei zum Lesen bzw. Schreiben vor. Mithilfe von PHP können Sie Dateien schreiben oder lesen. Sie können Ihren Besuchern so z.B. die Möglichkeit geben, eine Webseite zu kommentieren und zu editieren.
Die Variable $Datei aus dem untenstehenden Beispiel enthält nicht den Inhalt der Datei sfk-seminare.txt, sondern ist lediglich ein Zeiger auf eben diese Datei. Die Funktion fwrite() schreibt dann den gewünschten Inhalt in die Datei. Zum Schluss wird mit fclose() der Zugriff auf die Datei beendet. <?php Falls diese Übung bei Ihnen lediglich die Fehlermeldung "permission denied" im Browser hervorruft, sollten Sie die Schreib- und Leserechte der txt-Datei überprüfen. Unter Unix ändern Sie die Zugriffsrechte auf der Kommandozeile mit chmod 777 seminare.txt. Wenn Sie keinen lokalen oder ssh-Zugriff auf Ihren Webserver haben, können Sie evtl. auch Ihr FTP-Programm zum Ändern der Rechte nehmen. Zahlreiche FTP-Clients ermöglichen das Setzen von Dateirechten. Eine dritte Möglichkeit ist das Ändern von Dateirechten mit der PHP Funktion chmod().
Weitere Übungen zu Dateisystemfunktionen:
|
| Formularauswertung mit PHP | |
Um die Benutzereingaben aus unserer Formularübung auszuwerten und in einer eMail zu senden, werden diese Variablenwerte an die Datei FormularFolge.php gesendet. Hier folgt der Code dieser PHP-Datei. <?php
Ob der Anwender ein Formularfeld ausgefüllt hat, können Sie mit folgendem Code prüfen: if ($Name=="") { Ist in der Datei
php.ini
der Wert
register_globals
aus Sicherheitsgründen ausgeschaltet, müssen die einzelnen Variablenwerte aus dem Formular beispielsweise mit $Telefon=$HTTP_GET_VARS['$Telefon']; übergeben werden. Checkboxenwerte in Datenbank speichern Vorlage für automatisierte Formularauswertung Die Funktion mail() im Detail: http://www.php.net/manual/de/function.mail.php
|
| PHP und MySQL | |
In der folgenden Übung bauen wir Schritt für Schritt ein kleines Gästebuch mithilfe einer MySQL-Datenbankanbindung. Die MySQL-Datenbank ist bereits auf dem sfk-Schulungsserver eingerichtet. Datenbanken werden im Web unter anderem dazu genutzt, sogenannte Content Management Systeme (Redaktionssysteme) zu betreiben.
Auch bei Foren und Gästebüchern werden die Inhalte oft in einer Datenbank gespeichert. Schritt 1: Als erstes versuchen wir eine Verbindung zum MySQL Server aufzubauen. <?php Wenn Sie im obenstehenden Skript den user "ruth" gegen "root" austauschen, klappt auch die Verbindung. Eine Alternative zu der if else Konstruktion um eine Fehlermeldung auszugeben wäre die Funktion die(). <?php Die folgenden Schritte (Datenbank erstellen, sowie Tabellen anlegen und löschen) lassen sich auch mit anderen Tools wie phpMyAdmin komfortabel erledigen. Sie sind aber eine gute Übung für das Verständnis des Zusammenspiels von PHP und MySQL. Schritt 2: neue Datenbank erstellen. <?php Natürlich gibt es noch ganz andere Möglichkeiten, eine neue Datenbank auf dem MySQL-Server zu installieren, z.B. mit phpMyAdmin. Aber es geht auch mit PHP. Schritt 3: Tabellen anlegen bzw. löschen. <?php Die neue Tabelle besteht zunächst nur aus zwei Spalten für den Namen und den Text des Gästebuchbenutzers. Auch das Anlegen einer neuen Tabelle lässt sich mit phpMyAdmin und anderen Tools komfortabel erledigen. //Datenbank auswählen Schritt 4: Daten eintragen <?php Wie Sie Daten über ein Formular in die Datenbank einlesen, sehen Sie in der Übungsdatei 7.MiniForum.php auf Ihrer Schulungs-CD. Schritt 5: Daten auslesen <?php
Weitere Übungen: Größe einer Tabelle ermitteln: http://www.selfphp.info/tipps_tricks/mysql/mysql_db_tbl_size.php |
| Grafik | |
Wenn auf Ihrem Webserver die GD-Grafikbibliothek installiert ist, können Sie Gif, Jpeg und PNG-Dateien über PHP erzeugen. Das folgende Beispiel erzeugt ein farbiges Rechteck mit Schrift. <?php
|
| Sicherheit | |
Um sicherheitskritische Websites vor dem Zugriff von Hackern zu schützen, folgen hier einige Sicherheitshinweise. Isolieren Sie die internen Variablen von den durch Benutzer übergebenen Variablen aus Formulardaten und stellen Sie sicher, dass Variablen keine „unsicheren Werte“ enthalten. $sorte = $_REQUEST['sorte']; Die Funktionen realpath() und pathname() verhindern, dass Anwender schadhaften Code durch die Angabe eines absoluten Pfades ausführen können. realpath() entfernt spezielle Marker wie "..", basename() gibt nur den Teil einer Pfadangabe zurück, der den Dateinamen selbst enthält. Mit der Option open_basedir in der php.ini-Datei beschränken Sie Dateisystem-Zugriffe auf ein bestimmtes Verzeichnis. Setzen Sie die Option post_max_size in der php.ini auf einen sinvollen Wert wie 1 MB, um ein Überlauf des Dateisystems zu verhindern. Schalten Sie unnötige Zugriffsrechte auf eine Datei rechtzeitig aus wie im folgenden Beispiel: umask(077); Teilen Sie sich mit anderen Benutzern einen virtuellen Webserver, haben diese unter Umständen Zugriff auf Session-Variablen, da diese standardmäßig im /tmp-Verzeichnis landen. Speichern Sie Sessiondateien besser in einem eigenen Verzeichnis. Legen Sie dazu im Virtual Host Block Ihrer httpd.conf-Datei die Richtline php_value session.save_path / eigenesVerzeichnis an. Alternativ können Sie Session-Variablen auch in einer Datenbank abspeichern. Schalten Sie den safe_mode in der php.ini-Datei ein, wenn Sie den Webserver mit anderen Nutzern teilen. Legen Sie wenn möglich Ihre Bibliotheken und include-Datei ausserhalb des Dokumentenverzeichnisses des Webservers ab. Deaktivieren Sie unsichere PHP-Funktionen wie z.B. eval(), exec() oder system() über die Konfigurationsoption disable_functions(). Deaktivieren Sie Fehlermeldungen, die Aufschluss über Angriffsmöglichkeiten Ihres Systems geben könnten durch die Konfiguration display_errors = off. Installieren Sie Suhosin , eine Software, die Verschlüsselungsfunktionen bietet, gegen Pufferüberläufe und unterschiedliche Atacken schützt. Läuft PHP als cgi, hat der Websitebetreiber durch eine php.ini-Datei im gleichen Verzeichnis wie das auszuführende Skript nahezu unbegrenzten Einfluss auf die PHP-Optionen. Läuft PHP hingegen als mod_php, hat man wesentlch weniger Konfigurationsmöglichkeiten, nämlich nur durch Anweisungen in .htaccess-Dateien. Wie PHP in Ihrem Webserver eingebunden ist, erfahren Sie in der Ausgabe von <?php phpinfo(); ?> Steht im Feld Server API der Wert "Apache Handler", läuft mod_php andernfalls steht dort "cgi". Links MySQL-Injection: http://de3.php.net/manual/de/security.database.sql-injection.php
|
| Performanceoptimierung | |
Wenn ein Webserver, der statische Seiten ausliefert, zu langsam erscheint, sollte sich der Hoster eine schnellere Anbindung in's Internet leisten, weniger Domains auf einem Server gleichzeitig hosten oder leistungsfähigere Hardware anschaffen.
|
| Literaturhinweise und Links | |
PHP Handbuch auf http://www.php.net/manual/de/
PHP Michael Seeboerger-Weichselbaum, rororo, ISBN: 3499 61233
|
Letzte Aktualisierung dieser Datei am: 15.11.2007 Haben Sie Anregungen, Kritik oder Ideen zu dieser Seite? Sie können hier einen Kommentar schreiben. Stephan, (eMail: info(at)sfk-online(dot)com) schrieb am 21.07.2005, 18.04 Uhr: Diese kleine Kommentarfunktion ist ein Beispiel, wie Sie mit den Besuchern Ihrer Website in Kontakt treten können. Es ist in PHP realisiert und läuft auch ohne MySQL-Datenbank.Susanne, eMail: info@sevenpools.de schrieb am 21.07.2005, 19.15 Uhr: Dann kommt hier doch gleich der erste offizielle Eintrag von mir. Prima PHP-Einführungsseite. Gute Idee auch, Marginalien zu platzieren.
Grüße, SusanneStephan, eMail: info(at)sfk-online(dot)com schrieb am 21.07.2005, 19.24 Uhr: Hallo Susanne, danke für deinen Kommentar. Dass die Kommentarfunktion jetzt ohne MySQL läuft ist überigens gar kein so großer Nachteil. Alle Kommentare werden jetzt in einem Verzeichnis gespeichert, so dass kein allzu großes Datenchaos entsteht.Stephan Stefan B., eMail: sb(at)bluetarget(dot)de, schrieb am 28.07.2005, 19.45 Uhr: Schöne Seiten. Und ich hab wieder was dazu gelernt. Die Formularauswertung werde ich mal ausprobieren. Brauche allerdings noch einen Code, der die Syntax einer eingegebenen E-Mail-Adresse überprüft. Gibt\'s sowas?Stephan, eMail: info(at)sfk-online(dot)com, schrieb am 29.07.2005, 10.42 Uhr: Die eMail-Angaben kannst du mit regular expressions überprüfen. Siehe http://de.php.net/manual/de/function.ereg.phpViel Erfolg. s*css, eMail: scss@hamm-sued.biz, schrieb am 04.04.2006, 14.46 Uhr: Danke für die Info\'s. Musste gerade einen externen Footer einbinden. Jörg Burmeister, eMail: keine Angabe, schrieb am 15.05.2006, 20.58 Uhr: Guten Tag, Herr Franke
eine Frage bzgl. der Formular-Abfrage: Wo genau muss ich \'$Telefon=$HTTP_GET_VARS[\'$Telefon\'];\' eintragen?
Vielen Dank im Voraus.
Gruß, Jörg Stephan Franke, eMail: franke (at) sfk-online.com, schrieb am 07.06.2006, 11.54 Uhr: Hallo Jörg,
|