Begleitskript zum PHP Einführungskurs

Ähnliche Dokumente
PHP. Einführungskurs

Urhebernennung Nicht-kommerziell Gegenseitigkeit 1.0

Namensnennung Weitergabe unter gleichen Bedingungen 2.0

Begleitskript zum PHP Einführungskurs

Funktionen in JavaScript

Dateien lesen und schreiben mit php

Österreichische Fassung Entwurf 1. Urhebernennung Nicht-kommerziell Gegenseitigkeit 1.0

Schleifen: Immer wieder dasselbe tun

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Programmsteuerung mit PHP - if/else, elseif,switch

Funktionen in JavaScript

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!!

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST

Übung zur Vorlesung Multimedia im Netz

Grundlagen. Wie sind PHP-Dateien aufgebaut?

Web-basierte Anwendungssysteme PHP Teil 2

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Multimedia im Netz Wintersemester 2011/12

Internet-Technologien

1)Login Funktion ohne Datenbank

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.

PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern

Python CGI-Skripte erstellen

PHP. M.Sc. Nadine Preuß Geographische Analyse- und Darstellungsmethoden WS 15/

Funktionen. - sind kleine, meist ausgelagerte Programme bzw. Programmfragmente. - können Werte zurückgeben, z.b. Berechnungen

Funktionen nur wenn dann

Kapitel 4: PHP-Grundlagen Kapitel 5: PHP-Bausteine für Programme

Bash-Skripting Linux-Kurs der Unix-AG

Funktionen nur wenn dann

Tutorial: Tabellen und PHP statt Frames

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

Einführung in PHP. NLI-Kurs BBS am Museumsdorf Cloppenburg Außenstelle Löningen

Dateizugriff unter C

Linux Kommandozeile: Einfache Skripte. 1 Wiederhohlung. 2 Einfache Skripte

Arithmetik in der tcsh

Bash-Skripting Linux-Kurs der Unix-AG

Urheberrecht und Lizenzen. Dr. Sebastian Mehl

Shell-Scripting Linux-Kurs der Unix-AG

Übersicht Shell-Scripten

PHP Schulung Beginner. Newthinking Store GmbH Manuel Blechschmidt

Projekt Online-Shop:

Funktionen in PHP 1/7

Inhalt. Seite 1 von 14

Anleitung Formmail- Script für den DA-FormMaker

Shell-Scripting Linux-Kurs der Unix-AG

Ein einfaches Gästebuch erstellen

Softwaretechnik Teil Webprogrammierung (HTML, PHP) SS2011

Dynamische Webseiten mit PHP. Oder: LAMP - The open way

GI Vektoren

"Die HTML-PHP-Schnittstelle -- Ein- und Ausgabe der Daten"

Kurze Einführung in PHP

PHP Übungsaufgabe 2 1 / 5. Doing Web Apps. PHP Übungsaufgabe 2

Java: Eine kurze Einführung an Beispielen

DAS EINSTEIGERSEMINAR PHP 5.3 LERNEN ÜBEN ANWENDEN. Oliver Leiss Jasmin Schmidt. 3. Auflage

PHP/HTML-Exkurs_Aufgabe

Einführung in die Skriptsprache PHP

1. Übung IT-Management HTML, CSS und JavaScript Teil 2. Einführung, , PC Pool

Index/Schlüssel. 0 Montag. 1 Dienstag. 2 Mittwoch. 3 Donnerstag. 4 Freitag. 5 Samstag. 6 Sonntag

Modell Bahn Verwaltung. Tutorial. Links. Min. Programm Version 0.65, März w w w. r f n e t. c h 1 / 11

Dynamik bis zur DB-Interaktion. Marc Schanne. CGI Möglichkeiten

Fachhochschule Südwestfalen Wir geben Impulse. Kontrollstrukturen und Schleifen in Octave

MySql und PHP. Apache2: Konfigurieren für php4. ...\apache2\conf\httpd.conf aufrufen. Folgende Zeilen einfügen:

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion

for ($i=1 ;$i<=25 ;$i++) { echo "$i "; }?> <br> <a href=" zur Index-Seite</a> </body> </html>

JSP Usereingabe. Inhalt. 1 Zielsetzung. SEW(3.Jg) Unterlagen zu Java Server-Pages Teil 2

Kleine Einführung in den Matlab-GUI-Editor

Shell-Scripting Linux-Kurs der Unix-AG

06 While-Schleifen. While-Schleifen 1/7 Wiederholung: Schleifen

DML-BY Dresden Media Lizenz - Namensnennung

Anleitung PHP-Script für DA-BestellFormular Dunkel & Iwer GbR. Version 1.5 / DA

Programmieren der Untersuchung

entweder: zeilenweise fgets() oder: zeichenweise fgetc()

Handbuch Formulare. Stand: Advantic Systemhaus GmbH

Generieren von Concurrent Lizenzen. Hilfe für

Funktionen in Matlab. Nutzerdefinierte Funktionen können in.m-datei gespeichert werden

Sessions mit PHP. Annabell Langs Sessions in PHP - Annabell Langs 1

<? $ZeilenMax = 9; $SpaltenMax = 9; echo "<pre>";

Schiller-Gymnasium Hof

Werner Geers. Berufliche Informatik. Zusatzinformationen. 1 DATENTRÄGER UND DATEIEN Datenträger Dateien... 3 ISBN:

Datenbanksysteme SS 2007

Bash-Scripting Linux-Kurs der Unix-AG

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Ein Array ist eine Liste mit Einträgen, fast wie eine Einkaufsliste. Man kann darin also mehr als einen Eintrag in eine einzige Variable speichern.

PHP JavaScript Kapitel 9. Java-Script-Objekte und das Event-Modell

Strings. Daten aus Dateien einlesen und in Dateien speichern.

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

Eine kleine Befehlssammlung für Java Teil1

2. WWW-Protokolle und -Formate

VERARBEITUNG VON FORMULARDATEN

6 Ein- und Ausgabe. Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig (

Abbildung 6-8: Abfolge beim doppelten Abschicken von Formularen

DYNAMISCHE SEITEN. Warum Scriptsprachen? Stand: CF Carola Fichtner Web-Consulting

Programmieren lernen mit Visual Basic

Partner-ID in eigenen Seiten verwenden

1 Oberfläche zum Ausführen der PHP-Dateien

Web-basierte Anwendungssysteme PHP-Einführung

Praktikum im Grundstudium

Klausur am 28. Januar 2005

Transkript:

Begleitskript zum PHP Einführungskurs 2004-2009 Jochen Grundmann http://www.online-platform.net Dieser Inhalt ist unter einem Creative Commons Namensnennung-NichtKommerziell-KeineBearbeitung 2.0 Germany Lizenzvertrag lizenziert.

Seite 2

Namensnennung-NichtKommerziell-KeineBearbeitung 2.0 Deutschland Sie dürfen: den Inhalt vervielfältigen, verbreiten und öffentlich aufführen Zu den folgenden Bedingungen: Namensnennung. Sie müssen den Namen des Autors/Rechtsinhabers nennen. Keine kommerzielle Nutzung. Dieser Inhalt darf nicht für kommerzielle Zwecke verwendet werden. Keine Bearbeitung. Der Inhalt darf nicht bearbeitet oder in anderer Weise verändert werden. Im Falle einer Verbreitung müssen Sie anderen die Lizenzbedingungen, unter die dieser Inhalt fällt, mitteilen. Jede dieser Bedingungen kann nach schriftlicher Einwilligung des Rechtsinhabers aufgehoben werden. Die gesetzlichen Schranken des Urheberrechts bleiben hiervon unberührt Das Commons Deed ist eine Zusammenfassung des Lizenzvertrags in allgemein verständlicher Sprache. Seite 3

PHP Einführung Inhaltsverzeichnis 1 Webserverkonfiguration 6 1.1 Erstellen eines virtuellen Servers mit Apache.................. 6 2 Einbetten von PHP Code in HTML 10 3 Bildschirmausgaben 11 3.1 Feststellen der PHP Version und Konfiguration auf dem Webserver...... 11 3.2 HTML in PHP einbetten............................. 12 3.3 Kommentare................................... 12 4 Variablen 13 4.1 Text und Variablen zusammen ausgeben.................... 13 4.2 Weitere Verkettungsmöglichkeiten....................... 14 4.3 Erweiterung einer bestehenden Variablen.................... 14 4.4 Vordefinierte Variablen.............................. 14 5 Stringfunktionen 16 6 Kontrollstrukturen 19 6.1 Einfache If Anweisung.............................. 19 6.2 if Bedingung mit mehreren Anweisungen.................... 19 6.3 if...else...................................... 20 6.4 if...else mit mehreren Anweisungen....................... 20 6.5 if...elseif...else.................................. 20 6.6 Vergleichsoperatoren............................... 21 6.7 Logische Operatoren............................... 21 7 Schleifen 23 7.1 for........................................ 23 7.2 while....................................... 23 7.3 do... while.................................... 24 7.4 Vorzeitiges Beenden von Schleifen........................ 24 8 Funktionen 26 8.1 Funktion ohne Parameter............................ 26 8.2 Funktion mit Parametern............................ 27 8.3 Funktion mit Rückgabewert........................... 27 9 Arrays 29 Seite 4

10 Dateien einbinden 31 11 Dateizugriffe 32 11.1 fopen....................................... 32 11.2 fclose....................................... 33 11.3 fwrite....................................... 33 11.4 Dateien lesen................................... 33 11.5 file........................................ 34 11.6 filesize...................................... 34 11.7 file_exists.................................... 35 11.8 filemtime..................................... 35 12 Datum und Uhrzeit 36 12.1 Parameter zur Formatierung von Datum und Uhrzeit.............. 37 13 Formularauswertung 39 13.1 Ein einfaches Registrierungsformular....................... 42 14 Lizenzvertrag 46 Seite 5

PHP Einführung 1 Webserverkonfiguration PHP ist eine serverseitige Skriptsprache. Der PHP-Code wird vom Webserver geparst und als HTML an den Browser zurückgeschickt. Mögliche Webserver sind u. a. Microsoft Internet Information Server (IIS), Apache, OmniHTTPd. Deshalb können PHP-Dateien nicht über die interne Vorschau, wie es HTML Editoren anbieten, betrachtet werden. Eine einfache Möglichkeit ein LAMP/WAMP 1 System zu bekommen ist, eine XAMPP Distribution zu installieren (http://www.apachefriends.org). Diese enthält neben dem Apache Webserver, PHP und MySQL noch zahlreiche weitere Programme. 1.1 Erstellen eines virtuellen Servers mit Apache Um verschiedene Webprojekte über unterschiedliche Domainnamen aufrufen zu können, empfiehlt es sich dafür unterschiedliche virtuelle Server einzurichten. Im folgenden wird die Einrichtung eines namensbasierten virtuellen Servers unter Apache beschrieben. Sämtliche Einstellungen am Apache Webserver werden in der Datei httpd.conf vorgenommen. Unter Windows finden Sie diese Datei im Verzeichnis c:\programme\xampp\apache\conf, unter Linux liegt sie im Verzeichnis /opt/lampp/etc Am Ende dieser Datei befindet sich eine Reihe von include Anweisungen. Stellen Sie zunächst sicher, dass kein Kommentarzeichen vor der Zeile Include etc/extra/httpd-vhosts.conf steht. Entfernen Sie dieses gegebenenfalls. Öffnen Sie anschließend die Datei httpd-vhosts.conf aus dem Unterverzeichnis extra mit einem Texteditor. Entfernen Sie zuerst das Kommentarzeichen vor der Zeile NameVirtualHost *:80 um die Unterstützung für virtuelle Hosts zu aktivieren. Jeder virtuelle Host Container beginnt mit <VirtualHost *:80> und endet mit </VirtualHost>. Kopieren Sie das am Anfang der Datei und entfernen Sie die Kommentarzeichen vor folgenden Zeilen: <VirtualHost *:80> ServerAdmin webmaster@dummy-host2.example.com DocumentRoot /www/docs/dummy-host2.example.com ServerName dummy-host2.example.com ## ErrorLog @rel_logfiledir@/dummy-host2.example.com-error_log ## CustomLog @rel_logfiledir@/dummy-host2.example.com-access_log common </VirtualHost> 1 LAMP ist die Abkürzung für Linux/Apache/MySQL/PHP und steht für das am häufigsten verwendete System, dass bei Internet Servern zum Einsatz kommt. Bei WAMP steht das W für Windows, wenn dieses Betriebssystem verwendet wird. Seite 6

Tragen Sie in der Zeile DocumentRoot den Pfad zu dem Ordner ein, in dem sich die XAMPP Startseite befindet, z.b. DocumentRoot C:/Programme/xampp/htdocs. Achten Sie bitte darauf hier den normalen Schrägstrich (/) zu verwenden und nicht den sonst unter Windows üblichen Backslash (\). Auch der Laufwerksbuchstabe muss mit angegeben werden. Unter ServerName geben Sie localhost ein. Anschließend muss der virtuelle Host Container noch um eine Directory Anweisung ergänzt werden. Fügen Sie unter der Zeile ServerName folgende Zeilen ein. <Directory c:/programme/xampp/htdocs> Order allow,deny Allow from all AllowOverride All </Directory> Kopieren Sie die Pfadangabe unter DocumentRoot in die Directory Anweisung. Der Eintrag für den virtuellen Host sollte jetzt so aussehen: <VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com DocumentRoot c:/programme/xampp/htdocs ServerName localhost <Directory c:/programme/xampp/htdocs> Order allow,deny Allow from all AllowOverride All </Directory> # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> Dieser virtuelle Host wird benötigt um auch weiterhin die XAMPP Startseite aufrufen zu können. Kopieren Sie jetzt den Block und passen Sie die Zeilen DocumentRoot, ServerName und Directory an Ihr Webprojekt an, z.b. <VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com DocumentRoot C:/typo3 ServerName typo3.home <Directory C:/typo3> Order allow,deny Allow from all AllowOverride All </Directory> # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> Seite 7

PHP Einführung Wichtig: unter Windows darf nicht der übliche Backslash ( \) zum Trennen von Ordnern verwendet werden, sondern der unter Linux übliche Slash ( / ), außerdem muss der Laufwerksbuchstabe vor das Verzeichnis gesetzt werden. z. B. g:/elearning. Unter Servername wird der Name eingetragen, über den die Seite in einem Browser aufgerufen werden soll, z.b. e-learning.home. Um weitere virtuelle Hosts zu erstellen wiederholen Sie die o.a. Schritte. Denken sie daran, nach dem Anlegen eines virtuellen Hosts den Apache Webserver neu zu starten, damit die Änderungen wirksam werden. Damit der eingetragene Servername auch über einen Browser verwendet werden kann, muss noch ein Eintrag in der Datei hosts 2 noch ein Eintrag in der folgenden Art vorgenommen werden: 2 Unter Linux befindet sich die Datei im Verzeichnis /etc, unter Windows 2000/XP/2003 unter %sytemroot%\system32\drivers\etc und unter Windows 98 direkt im Verzeichnis C:\windows. Seite 8

Im Browser kann eine Datei dann über die Eingabe http://servername/dateiname z.b.: http://e-learning.home/index.php aufgerufen werden. Seite 9

PHP Einführung 2 Einbetten von PHP Code in HTML Grundsätzlich stehen zum Einbetten von PHP Code folgende Möglichkeiten zur Verfügung: 1. XML konform: <?php...?> 2. Kurzform: <?...?> 3. <script language="php">... </script> 4. ASP Stil: <%... %> Die Möglichkeiten 2. und 4. stehen nur zur Verfügung, wenn dies auf dem Webserver aktiviert wurde. <body> <strong> Hier ist HTML Code </strong><br> <?php echo "Hier kommt PHP<br>";?> und hier wieder HTML<br> </body> Anmerkung: Jede Codezeile endet in PHP mit einem Semikolon (;). Längere Codezeilen können also ohne weiteres auf mehrere Zeilen verteilt werden. PHP Seiten müssen die Erweiterung.php bekommen, damit der Webserver sie auch als solche versteht. Seite 10

3 Bildschirmausgaben Bildschirmausgaben werden in PHP über die Befehle echo oder print realisiert. echo string echo "Hallo Welt"; print string print "Hallo Welt"; Die beiden e geben den Text Hallo Welt auf dem Bildschirm aus. 3.1 Feststellen der PHP Version und Konfiguration auf dem Webserver Um die PHP Konfiguration auf dem Webserver festzustellen, wird die Funktion phpinfo() verwendet. <?php phpinfo ();?> Seite 11

PHP Einführung 3.2 HTML in PHP einbetten HTML Code muss innerhalb von PHP immer in eine echo-anweisung gebettet werden. echo "<strong>hallo Welt</strong>"; Da der HTML Code in der echo-anweisung in Anführungszeichen "..." steht, müssen die Anführungszeichen im HTML Code entweder durch einen vorangestellten Backslash \maskiert werden oder durch einfache Anführungszeichen... ersetzt werden. echo "<table width= 100 >"; echo "<table width=\"100\">"; Wenn innerhalb von einfachen Anführungszeichen wieder doppelte benötigt werden, werden diese einfach weg gelassen. 3.3 Kommentare 1. #... von diesem Zeichen bis zum Ende der Zeile 2. //... von diesem Zeichen bis zum Ende der Zeile 3. /*...*/ Ein Kommentar über mehrere Zeilen hinweg # Dieses ist ein Kommentar // Dieses auch /* Und hier ein Kommentar der über mehrere Zeilen geht */ Seite 12

4 Variablen Variablen dienen zum Zwischenspeichern von Werten, die weiter verarbeitet werden müssen. Bei der Vergabe von Namen für Variablen müssen folgende Punkte beachtet werden. Variablen fangen in PHP immer mit einem $-Zeichen an. Groß- und Kleinschreibung bei Variablennamen wird unterschieden. Ein Variablenname darf nicht mit einer Zahl beginnen. Einziges erlaubtes Sonderzeichen ist der Unterstrich (_). Einer Variablen wird auf folgende Weise ein Wert zugewiesen. $var1 = "Hallo Welt"; $var2 = 123; Bei der Zuweisung von Text an eine Variable muss dieser immer in Anführungszeichen angegeben werden. Der Wert der Variablen $var1 wird mit echo ausgegeben. echo $var1; 4.1 Text und Variablen zusammen ausgeben Um Text und Variablen zusammen auszugeben, wird der Punkt (.) als Verkettungsoperator verwendet. echo "Der Wert der Variablen var1 ist: ".$var1."<br>"; echo "Variable 1: ".$var1."<br> Variable 2: ".$var2; Ausgabe Der Wert der Variablen var1 ist: Hallo Welt Variable 1: Hallo Welt Variable 2: 123 Seite 13

PHP Einführung 4.2 Weitere Verkettungsmöglichkeiten Variablen kann auch ein Wert einer bereits bestehenden Variablen oder, bei Verkettung, mehrerer Variablen durch Verkettung zugewiesen werden. $var1 = "Hallo Welt"; $var2 = 123; $var3 = $var1." ".$var2; echo $var3; Ausgabe Hallo Welt 123 4.3 Erweiterung einer bestehenden Variablen Um eine bestehende Variable zu erweitern, wird der.= Operator verwendet. Dadurch wird eine neuer String an einen bestehenden String angehängt. $var1 = "Hallo Welt"; $var1.= "!!!" ; Ausgabe Hallo Welt!!! 4.4 Vordefinierte Variablen PHP bietet eine Reihe von vordefinierten Variablen an, auf die jederzeit zugegriffen werden kann. Diese werden auch als sogenannte Superglobals bezeichnet. Die Werte sind in assoziativen Arrays gespeichert. Name $_POST $_GET $_SERVER $_ENV $_COOKIE $_SESSION Funktion per post gesendete Daten per get gesendete Daten Servervariablen Umgebungsvariablen in Cookies gespeicherte Daten In Sessions gespeicherte Daten Seite 14

Das folgende liefert den verwendeten Browser und das Betriebssystem des Users zurück. echo $_SERVER["HTTP_USER_AGENT"]; Ausgabe z.b: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) Dieses liefert die IP Adresse des Users zurück. echo $_SERVER["REMOTE_ADDR"]; Ausgabe z.b: 127.0.0.1 Anmerkung: Diese Adresse immer nur bei lokalem Arbeiten. Welche vordefinierten Variablen zur Verfügung stehen kann über die Funktion phpinfo (siehe Kapitel 3.1 auf Seite 11) erfahren werden. Seite 15

PHP Einführung 5 Stringfunktionen Für die Bearbeitung von Strings gibt es in PHP eine Reihe von Funktionen. Im Folgenden sollen nur einige davon vorgestellt werden. Mit der Funktion strlen kann die Länge eines Strings ermittelt werden. strlen (string) $var = "Guten Tag"; $length = strlen($var); echo "Die Länge des Strings beträgt ".$length." Zeichen."; Ausgabe Die Länge des Strings beträgt 9 Zeichen Mit der Funktion substr kann man nur einen Teil eines Strings ausgeben lassen. Dazu muss man eine Startposition, ab der die Ausgabe erfolgen soll, angeben, optional kann auch noch die Anzahl der auszugebenden Zeichen angegeben werden. Das erste Zeichen hat die Position 0. substr (string, start [,length]) $var = "Guten Tag"; $teil = substr($var,6,3); echo $teil; Ausgabe Tag Mit der Funktion substr_replace kann man einen Teil eines Strings durch einen anderen ersetzen lassen. Auch hierzu muss eine Startposition angegeben werden. Seite 16

substr_replace(string, string_replacement, start [, length]) $var = "Guten Tag"; $replace = substr_replace($var,"abend",6); echo $replace; Ausgabe Guten Abend Mit den Funktionen strtolower und strtoupper kann die Groß- und Kleinschreibung von Strings geändert werden. strtolower wandelt einen String in Kleinbuchstaben um, strtoupper in Großbuchstaben. strtolower (string) strtoupper (string) $var = "Guten Tag"; echo strtolower ($var)."<br>"; echo strtoupper ($var); Ausgabe guten tag GUTEN TAG Die Funktion chop entfernt Zeilenumbrüche aus einem String der aus einer Textdatei ausgelesen wurde (siehe hierzu auch das auf Seite 34). chop (string) Mit den Funktionen trim(), ltrim() und rtrim() können überzählige Leerzeichen am Anfang und /oder Ende entfernt werden. trim entfernt Leerzeichen am Anfang und am Ende. ltrim entfernt Leerzeichen am Anfang. rtrim entfernt Leerzeichen am Ende. Seite 17

PHP Einführung trim (string) $var1 = "Hallo Welt"; $var2 = "!!!"; echo "Ausgabe mit Leerzeichen: ".$var1.$var2; echo "<br>"; $var3 = trim($var2); echo "Ausgabe ohne Leerzeichen: ".$var1.$var3; Um die Wirkungsweise der Funktion zu sehen, müssen Sie den HTML Quelltext betrachten. Seite 18

6 Kontrollstrukturen Immer wieder kommt es in einem Programm vor, dass z.b. Formularangaben überprüft werden müssen oder die Ausgabe von einem bestimmten Datum abhängig ist. In solchen Fällen kommen Kontrollstrukturen zu Einsatz, von denen die if Anweisung am häufigsten zum Einsatz kommt. Außerdem werden Vergleichsoperatoren benötigt. 6.1 Einfache If Anweisung In der einfachsten Form wird über die if-anweisung eine Variable auf einen bestimmten Wert hin überprüft. Anschließend folgt die Anweisung, die ausgeführt werden soll, wenn die Bedingung zutrifft. if (Bedingung) Anweisung $var = 1; if ($var == 1) echo $var; In diesem wird die Variable $var überprüft, ob sie den Wert 1 hat. Ist das der Fall, so wird ihr Wert ausgegeben. Im anderen Fall passiert nichts. 6.2 if Bedingung mit mehreren Anweisungen Wenn nach der Überprüfung mehrere Anweisungen erfolgen, so werden diese in geschweifte Klammern gesetzt. $var = 1; if ($var == 1) $var = "sehr gut"; echo $var; Seite 19

PHP Einführung 6.3 if...else Bei einem einfachen if werden die Anweisungen nur durchgeführt wenn die Bedingung zutrifft. Wenn auch Anweisungen ausgeführt werden sollen, wenn die Bedingung nicht zutrifft, so so folgt nach dem if eine else-anweisung. $var = 1; if ($var!= 1) echo $var; else echo "var ist 1"; Bei diesem wird $var aus gegeben, wenn der Wert ungleich 1 ist, ansonsten wird die Zahl 1 ausgegeben. 6.4 if...else mit mehreren Anweisungen Wenn mehrere Anweisungen nach der Überprüfung folgen, so müssen diese sowohl bei der if-anweisung als auch bei der else-anweisung in geschweifte Klammern gesetzt werden. $var = "Hallo"; if ($var == "Hallo" ) $var = "Hallo Welt" ; echo $var; else $var = "Tschüss" ; echo $var; 6.5 if...elseif...else Wenn mehrere if -Anweisungen aufeinander folgenden, wir jede einzelne überprüft und die entsprechenden Anweisungen durchgeführt. soll von mehreren Überprüfungen nur eine durchgeführt werden, bietet es sich an mit einer elseif -Anweisung zu arbeiten. Seite 20

if ($_GET[site]==1) include ("home.php"); elseif ($_GET["site"]==2) include ("about.php"); elseif ($_GET["site"]==3) include ("links.php"); elseif ($_GET["site"]==4) include ("info.php"); elseif ($_GET["site"]==5) include ("contact.php"); elseif ($_GET["site"]==6) include ("service.php"); else echo "<h2>diese Seite existiert nicht</h2>"; Je nachdem welchen Wert die Variable $site annimmt, wird die entsprechende Datei eingebunden. 6.6 Vergleichsoperatoren Vergleichs-Operatoren erlauben es - wie der Name schon sagt - zwei Werte zu vergleichen. Verwendet werden sie vor allem bei Bedingungen. Name Ergebnis $a == $b Gleich Gibt TRUE zurück, wenn $a gleich $b ist. $a === $b Identisch Gibt TRUE zurück wenn $a gleich $b ist und beide vom gleichen Typ sind(nur PHP 4). $a!= $b Ungleich Gibt TRUE zurück, wenn $a nicht gleich $b ist. $a <>$b Ungleich Gibt TRUE zurück, wenn $a nicht gleich $b ist. $a!== $b Nicht identisch Gibt TRUE zurück, wenn $a nicht gleich $b ist, oder wenn beide nicht vom gleichen Typ sind. $a <$b Kleiner Als Gibt TRUE zurück, wenn $a kleiner als $b ist. $a >$b Größer Als Gibt TRUE zurück, wenn $a größer als $b ist. $a <= $b Kleiner Gleich Gibt TRUE zurück, wenn $a kleiner oder gleich $b ist. $a >= $b Größer Gleich Gibt TRUE zurück, wenn $a größer oder gleich $b ist. 6.7 Logische Operatoren Logische Operatoren werden ebenfalls in Bedingungen verwendet, wenn mehrere Bedingungen gleichzeitig überprüft werden müssen. Name Ergebnis $a and $b Und TRUE wenn sowohl $a als auch $b TRUE ist. $a or $b Oder TRUE wenn $a oder $b TRUE ist. $a xor $b Entweder Oder TRUE wenn entweder $a oder $b TRUE ist, aber nicht beide.! $a Nicht TRUE wenn $a nicht TRUE ist. $a && $b Und TRUE wenn sowohl $a als auch $b TRUE ist. $a $b Oder TRUE wenn $a oder $b TRUE ist. Seite 21

PHP Einführung Wenn mehrere Vergleiche mit And oder Or verknüpft werden muss jeder Vergleich in runde Klammern gesetzt werden und diese noch einmal in runde Klammern. $var1 = 1; $var2 = 2; if (($var1 == 1) and ($var2 == 2)) echo "var1 ist ".$var1." und var2 ist ".$var2; Ausgabe var1 ist 1 und var2 ist 2 Seite 22

7 Schleifen Schleifen dienen zur Wiederholung von Vorgängen. 7.1 for Eine for Schleife führt einen Vorgang eine vorher festgelegte Anzahl von Malen durch. for (Startwert; Bedingung; Zähler) Anweisung(en); $var = 1; echo "<h1> For-Schleife</h1> <br> <h2> Startwert: ".$var." </h2>"; for ($var;$var<=10;$var++) echo $var."<br>"; Bei diesem wird die for-schleife 10mal durchlaufen, bei jedem Schleifendurchlauf wird der Wert von $var um 1 erhöht, bis die Abbruchbedingung erreicht wird. 7.2 while Eine while-schleife wird verwendet wenn man nicht weiß, wie oft eine Schleife durchlaufen werden muss. Hier muss die innerhalb der Anweisungen dafür gesorgt werden, dass die Abbruchbedingung erfüllt wird, ansonsten erzeugt man eine Endlos-Schleife. Ist die Abbruchbedingung bereits zu Beginn erfüllt, wird die Schleife erst gar nicht durchlaufen. while (Bedingung) Seite 23

PHP Einführung Anweisung(en); $var = 1; echo "<h1> While-Schleife</h1> <h2>startwert: ".$var."</h2>"; while ($var <=10) $var++; echo $var." < br> " ; 7.3 do... while Im Gegensatz zu einer While-Schleife wird eine Do-While-Schleife mindestens einmal durchlaufen, da die Abbruchbedingung erst am Ende der Schleife überprüft wird. do Anweisung(en); while (Bedingung); $var = 1; echo "<h1> Do-While-Schleife</h1> <h2> Startwert: ".$var."</h2>"; do $var++; echo $var."<br>"; while ($var <=10); 7.4 Vorzeitiges Beenden von Schleifen Wenn eine Schleife beendet werden soll, bevor die Abbruchbedingung erfüllt ist, benutzt man den Befehl break. Seite 24

$var = 1; echo "<h1>for-schleife mit break</h1><br><h2>startwert: ".$var."</h2>"; for ($var; $var <= 10; $var++) if ($var >= 5) break; echo $var."<br>"; Bei diesem wird die Schleife verlassen sobald $var den Wert 5 erreicht hat. Einzelne Schleifendurchläufe können mit dem Befehl continue übersprungen werden. $var = 1; echo "<h1>for-schleife mit continue</h1><br><h2> Startwert: ".$var."</h2>" ; for ($var; $var <=10; $var++) if ($var == 5) continue; echo $var."<br>"; Bei diesem wird die Ausgabe des Wertes 5 ausgelassen. Seite 25

PHP Einführung 8 Funktionen Funktionen werden dann nützlich wenn Programmcode innerhalb eines Scripts mehrmals benötigt wird. PHP unterscheidet drei Arten von Funktionen: Funktionen ohne Parameter Funktionen mit Parametern Funktionen mit Rückgabewert Funktionen beginnen immer mit dem Schlüsselwort function und (wie auch bei den vordefinierten Funktionen) zwei runden Klammern (). Danach kommt, innerhalb von geschweiften Klammern, der Anweisungscode der Funktion. Funktionen werden durch die Eingabe des Funktionsnamens aufgerufen. Sie können an beliebiger Stelle im Code definiert werden. Es ist natürlich wenig sinnvoll mehrere Funktionen willkürlich über das gesamte Script zu verteilen. Um den Überblick nicht zu verlieren, sollten alle Funktionen am Anfang bzw. am Ende des Scripts definiert werden. Werden Funktionen von verschiedenen Scripts verwendet, ist es sinnvoll diese in eine eigene Datei auszulagern und über eine include-anweisung (siehe Kapitel 10 auf Seite 31) einzubinden. 8.1 Funktion ohne Parameter Bei einer Funktion ohne Parameter werden die Anweisungen der Funktion bei jedem Aufruf durchgeführt. function test() echo "<strong> Hallo Welt</strong><br>"; test(); Der Aufruf der Funktion test() bewirkt die Ausgabe des Textes Hallo Welt. Seite 26

8.2 Funktion mit Parametern Bei einer Funktion mit Parametern werden Werte an die Funktion übergeben, die diese dann verarbeitet. Die Werte werden innerhalb der runden Klammern übergeben und jeweils durch ein Komma von einander getrennt. function test1($text1,$text2) echo "<strong>".$text1." ".$text2."</strong><br>"; test1("hallo","welt"); In diesem werden die Strings Hallo und Welt an die Funktion test1 übergeben. Diese gibt dann die Werte auf dem Bildschirm aus. Statt fester Werte können auch Variablen übergeben werden. function test1($text1,$text2) echo "<strong>".$text1." ".$text2."</strong><br>"; $var1 = "Hallo"; $var2 = "Welt"; test1($var1, $var2); 8.3 Funktion mit Rückgabewert Bei einer Funktion mit Rückgabewert werden Werte an eine Funktion übergeben. Innerhalb der Funktion werden die Werte bearbeitet und mit return zurückgeliefert. function test2($zahl1,$zahl2) return $zahl1*$zahl2; $zahl1 = 2; $zahl2 = 5; $erg = test2($zahl1,$zahl2); echo $erg; Seite 27

PHP Einführung Bei diesem werden zwei Zahlen an die Funktion test2 übergeben. Die Funktion multipliziert die Zahlen und liefert das Ergebnis zurück. Im Unterschied zu einer Funktion mit Parametern erfolgt die Ausgabe des Ergebnisses nicht in der Funktion sondern im eigentlichen Code. Anmerkung: In Funktionen verwendete Variablen gelten nur innerhalb der Funktion. Ein weiteres für die Verwendung von Funktionen finden Sie in Kapitel 13 auf Seite 41. Seite 28

9 Arrays Arrays können dazu verwendet werden, mehrere Werte in einer Variablen zu speichern. Eine Arrayvariable wird folgendermaßen definiert. $array_var = array(wert1, Wert2,...) $array_var = array("linux","windows","solaris"); Die einzelnen Werte eines Arrays werden von PHP bei Null beginnend durchnummeriert. Auf den ersten Wert bekommt also die 0. Um auf einen bestimmten Eintrag des Arrays zuzugreifen muss der Name des Arrays und die Nummer des Eintrags in eckigen Klammern eingegeben werden. $array_var = array("linux","windows","solaris"); echo $array_var[0]; Ausgabe Linux Mit dieser Zeile wird der erste Wert des Arrays $array_var auf dem Bildschirm ausgegeben. Um das gesamte Array abzuarbeiten, kann man z.b. eine for-schleife verwenden. Mit der Funktion count() kann die Anzahl der Einträge eines Arrays gezählt werden. $array_var = array("linux","windows","solaris"); $anzahl = count($array_var); echo " Das Array enthält ".$anzahl." Einträge"; Ausgabe Das Array enthält 3 Einträge Um alle Werte des Array zu verarbeiten, wird eine for-schleife verwendet. Seite 29

PHP Einführung for($x=0;$x<count($array_var);$x++) echo $array_var[$x]."<br>"; Ausgabe Linux Windows Solaris Als Abbruchbedingung für die for-schleife wird die Funktion count() verwendet. Mit der Funktion explode() kann eine Zeichenkette anhand eines festgelegten Trennzeichens zerlegt werden. Das Ergebnis wird in einem Array zurück geliefert. explode (string separator, string) $text = "Dies ist ein "; $array = explode(" ", $text); for ($x=0;$x<=count($array);$x++) echo $array[$x]."<br>"; Ausgabe Dies ist ein Seite 30

10 Dateien einbinden Häufig benötigter Code sollte ausgelagert werden. Mit dem Befehl include können externe Dateien in PHP-Scripts eingebunden werden. Diese können auch andere Dateitypen sein (HTML, Text, Javascript...). include (Dateiname) include("check.php"); Seite 31

PHP Einführung 11 Dateizugriffe Um z.b. Daten aus einem Formular nicht zu verlieren, können diese in Textdateien gespeichert werden. PHP stellt eine Reihe von Befehlen zum Öffnen, Lesen, überarbeiten, Speichern und Schließen zur Verfügung. 11.1 fopen fopen (Dateiname,Bearbeitungsmodus) Der Bearbeitungsmodus bestimmt welche Art von Zugriff auf die Datei erlaubt ist. Modus r r+ w w+ a a+ Funktion öffnet die Datei nur zum Lesen und positioniert den Dateizeiger auf den Anfang der Datei. Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei. Öffnet die Datei nur zum Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert wird versucht sie anzulegen. Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert, wird versucht sie anzulegen. Öffnet die Datei nur zum Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen. Öffnet die Datei zum Lesen und Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen. $Datei = fopen("test.txt","r"); Dieses öffnet die Datei test.txt und gibt sie zum Lesen frei. Gibt es diese Datei nicht, wird eine Fehlermeldung ausgegeben. Seite 32

11.2 fclose fclose (Dateiname) fclose("test.txt"); Dieses schließt die Datei test.txt. 11.3 fwrite Mit dem Befehl fwrite werden Daten in eine Datei geschrieben. fwrite (Dateiname, Text) fwrite("test.txt","hallo Welt"); 11.4 Dateien lesen Um Daten aus einer Datei zu lesen werden die Funktionen fgets und feof benötigt. fgets liest die Daten zeilenweise aus einer Datei. feof (eof = end of file) überprüft ob der Dateizeiger am Ende der Datei steht. fgets(dateiname, Länge) feof(dateizeiger) Seite 33

PHP Einführung $Datei = fopen("test.txt", "w+"); $text = "Hallo Welt" ; fwrite ($Datei, $text); fclose ($Datei); $Datei = fopen("test.txt", "r" ); while (!feof($datei)) $Inhalt=fgets($Datei,1000); echo $Inhalt; fclose ($Datei); Dieses öffnet die Datei test.txt. Anschließend wird der Text "Hallo Welt" in die Datei geschrieben und wieder geschlossen. Danach wird die Datei erneut geöffnet, zeilenweise (pro Zeile max. 1000 Zeichen) gelesen und auf dem Bildschirm ausgegeben 11.5 file Die Funktion file kann ebenfalls verwendet werden, um eine Textdatei einzulesen. Hierbei wird die gesamte Datei in einem Array gespeichert. Dieses kann dann über eine for-schleife abgearbeitet werden. file(dateiname) $datei = file("test.txt"); for ($x=0;$x< count($datei);$x++) echo chop($datei[$x])."<br>"; Die Zeilenumbrüche aus der Textdatei werden bei der Funktion file mit in das Array geschrieben. Deshalb ist es sinnvoll diese Zeilenumbrüche mit der Funktion chop (siehe Kapitel 11.5)zu entfernen. 11.6 filesize filesize(dateiname) Seite 34

$size = filesize("test.txt"); echo " Die Datei ist ".$size." Byte groß" ; 11.7 file_exists Mit der Funktion file_exists kann man überprüfen ob Dateien vorhanden sind. Damit lassen sich Fehler beim Öffnen nicht vorhandener Dateien abfangen. file_exists(dateiname) $filename ="test.txt"; if (file_exists($filename)) echo "Die Datei ".$filename." ist vorhanden; else echo "Es gibt die Datei ".$filename." nicht"; 11.8 filemtime Mit der Funktion filemtime können Datum und Uhrzeit der letzten Änderung einer Datei ausgelesen werden. Die Funktion liefert einen UNIX-Timestamp zurück. filemtime (Dateiname) $datei = "test.txt"; $zeit = filemtime($datei); echo "Letzte Änderung der Datei: ".date("d M Y H:i:s",$zeit); Seite 35

PHP Einführung 12 Datum und Uhrzeit In PHP wird die Zeit nach dem Unix-Timestamp gehandhabt. Dieser zählt die seit dem 1.1.1970 00:00 Uhr verstrichenen Sekunden. Mit der Funktion time() kann diese Anzahl ausgegeben werden. time () $zeit = time(); echo "Aktuelle Zeit als Unix-Timestamp: ".$zeit; Ausgabe Aktuelle Zeit als UNIX-Timestamp: 1141556942 Um aus dem Unix-Timestamp ein lesbares Datum oder eine lesbare Uhrzeit zu machen, muss dieser formatiert werden. Dazu wird die Funktion date() verwendet. date (string format, timestamp) $zeit = time(); echo "formatiertes Datum: ".date("d.m.y",$zeit); Ausgabe formatiertes Datum: 05.03.2006 $zeit = time(); echo "formatierte Uhrzeit: ".date("h:i:s",$zeit); Seite 36

Ausgabe formatierte Uhrzeit: 12:12:10 Doe Wochentage werden in englischer Sprache ausgegeben. Das nächste zeigt, wie diese auf deutsch ausgegebne werden können. $wochentage = array("sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"); $timestamp = time(); $wochentag = date("w", $timestamp); $datum = $wochentage[$wochentag].", ".date("d.m.y", $timestamp); echo $datum; Zuerst wird ein Array definiert, dass die deutschen Wochentagsnamen enthält. Der Parameter w liefert den aktuellen Wochentag als Zahl zurück (Sonntag = 0, Montag = 1, etc.). Diese Zahl entspricht dem Eintrag im Array und wird daraus ausgelesen. 12.1 Parameter zur Formatierung von Datum und Uhrzeit Parameter Ergebnis a "am"oder "pm" A "AM"oder "PM" B Swatch-Internet-Zeit d Tag des Monats *( 01-31 ) D Tag der Woche ( Wed - 3stellig) F Monatsangabe ( December - ganzes Wort ) g Stunde im 12-Stunden-Format (1-12 ) G Stunde im 24-Stunden-Format (0-23 ) h Stunde im 12-Stunden-Format *(01-12 ) H Stunde im 24-Stunden-Format *(00-23 ) i Minuten *( 00-59 ) I (großes i) 1 bei Sommerzeit, 0 bei Winterzeit j Tag des Monats ( 1-31 ) l (kleines L) ausgeschriebener Wochentag ( Monday ) L Schaltjahr = 1, kein Schaltjahr = 0 m Monat *(01-12 ) n Monat (1-12 ) M Monatsangabe ( Feb - 3stellig ) s Sekunden *( 00-59 ) S Englische Aufzählung ( th für 2(second)) t Anzahl der Tage des Monats ( 28-31 ) T Zeitzoneneinstellung des Rechners ( z.b. CEST ) U Sekunden seit Beginn der UNIX-Epoche ( 1.1.1970 ) Seite 37

PHP Einführung w Wochentag ( 0(Sonntag) bis 6(Samstag) ) Y Jahreszahl, vierstellig ( 2001 ) y Jahreszahl, zweistellig ( 01 ) z Tag des Jahres ( z.b. 148 (entspricht 29.05.2001) ) Z Offset der Zeitzone gegenüber GTM (-43200-43200 ) in Minuten Anmerkung: Will man mit Datum und Uhrzeit rechnen, muss man den Unix-Timestamp verwenden. Mit der Funktion mktime kann man ein beliebiges Datum in einen Unix- Timestamp umwandeln. mktime(h, M, S, M, T, J) $heute = time(); $jahr = date("y", $heute); $christmas = mktime(0,0,0,12,25,$jahr); $tage = round(($christmas - $heute)/86400,0); echo "Noch ".$tage." Tage bis Weihnachten"; Ausgabe Noch 294 Tage bis Weihnachten Damit das unabhängig von einem bestimmten Jahr funktioniert, wird das aktuelle Jahr zunächst aus dem aktuellen Timestamp ausgelesen als Variable an die Funktion mktime() übergeben. Seite 38

13 Formularauswertung PHP ist hervorragend geeignet um die Daten aus HTML-Formularen auszuwerten und weiterzuverarbeiten. Im form-tag müssen die Attribute action und method angegeben werden. Das Attribut action bekommt als Wert den Namen der PHP Datei, die die Auswertung vornimmt und unter method wird der Wert post eingetragen. <form action="check.php" method="post"> Im obigen wird die Datei check.php aufgerufen, sobald der Submit-Button geklickt wird. Die einzelnen Formularelemente spricht PHP über das name-attribut des jeweiligen Elements an. <input type="text" name="text"> Die per post gesendeten Daten werden in dem Array $_POST gespeichert (siehe Kapitel 4.4 auf Seite 14). Bezogen auf das obige kann PHP auf den in das Textfeld eingegebenen Wert über $_POST["text"] zugreifen. <form action="check.php" method="post"> Eingabe Text: <input type="text" name="text"> <input type="submit" name="senden" value="senden"> </form> Über die PHP-Datei check.php kann der eingegebene Text dann z.b. ausgegeben werden. echo "Ihre Eingabe war: ".$_POST["text"]; Diese setzt voraus, dass das Formularfeld auch tatsächlich ausgefüllt wurde, damit eine Bildschirmausgabe erfolgen kann. Da das nicht immer der Fall ist, sollten Formulareingaben vor der Ausgabe immer auf ihre Gültigkeit überprüft werden. Mit dem Befehl empty überprüft PHP ob eine Variable leer ist. Seite 39

PHP Einführung empty (var) if (empty ($_POST["text"]) echo "Sie haben das Feld nicht ausgefüllt" ; else echo "Ihre Eingabe war: ".$_POST ["text"]; Wenn das Formularfeld nicht ausgefüllt wird, wird eine Fehlermeldung ausgegeben, ansonsten der eingegebene Text. Um ausgefüllte Felder auf ihre Richtigkeit zu überprüfen, bietet PHP sogenannte reguläre Ausdrücke an. Bei einer e-mail Adresse ist es z.b. sinnvoll zu überprüfen ob das @-Zeichen gesetzt wurde. Mit dem Befehl ereg oder eregi sucht PHP nach einer bestimmten Zeichenkette in einem String. Der Unterschied zwischen den Befehlen ereg und eregi liegt darin, dass ereg die Groß- und Kleinschreibung berücksichtigt. eregi (String Suchmuster, String Zeichenkette) if (empty ($_POST["mail"])) echo "Sie haben das Feld nicht ausgefüllt" ; elseif (eregi("@",$_post["mail"])) echo "Ihre Eingabe war: ".$_POST["mail"]; else echo "Ihre Eingabe war falsch: ".$_POST["mail"]; Der Nachteil bei den obigen en ist, dass bei einer fehlerhaften oder fehlenden Eingabe der Benutzer zwar eine Fehlermeldung bekommt, aber leider das Formular nicht erneut aufgerufen wird, damit die Eingaben vervollständigt, bzw. korrigiert werden können. Da da Formular mehrfach benötigt wird, ist es am sinnvollsten das Formular über eine Funktion aufgerufen. Als wird ein einfaches Formular mit einem Textfeld verwendet, in dem der Benutzer eine Jahreszahl eingibt. Nach dem Senden der Formulardaten soll, bei gültiger Eingabe, das Datum ausgegeben werden, auf das Ostern in dem betreffenden Jahr fällt. Dafür stellt PHP die Funktion easter_date zu Verfügung. Seite 40

<?php function form()?> <form action = "ostern.php" method="post"> Geben Sie eine Jahreszahl ein: <input type="text" name="input"> <br> <br> <input type="submit" name="senden" value="senden"> </form> <?php?> Bei dieser Vorgehensweise wird für die Ausgabe des Formulars und die Auswertung der Formulardaten dieselbe Datei verwendet. Zuerst wird überprüft, ob der Submit-Button angeklickt wurde. Das ist nur dann der Fall, wenn die Variable $senden existiert. Wenn diese nicht gesetzt ist, wird das Formular aufgerufen. if (!$_POST["senden"]) form(); Wurde der Submit-Button geklickt, gibt es drei Möglichkeiten. 1. Es wurde ein leeres Formular versendet. Dann soll eine Fehlermeldung erfolgen und das Formular erneut aufgerufen werden. 2. Ein ungültiger Wert wurde eingegebenentweder Text oder eine falsche Jahreszahl. Auch hier erfolgt eine entsprechende Fehlermeldung und ein erneuter Aufruf des Formulars. (Die Funktion easter_date erlaubt nur Jahreszahlen zwischen 1970 und 2037.) 3. Ein korrekter Wert wurde versendet. Dann wird der Wert an die Funktion easter_date übergeben und das Datum formatiert ausgegeben. Seite 41

PHP Einführung else if (empty ($_POST["input"])) echo "Sie haben keine Eingabe vorgenommen!"; form (); elseif (($_POST["input"] < 1970) ($_POST["input"] > 2037)) echo " Ungültige Jahreszahl. Bitte geben sie eine Jahreszahl zwischen 1970 und 2037 ein"; form (); else $ostern = easter_date($_post["input"]); echo " Im Jahr ".$_POST["input" ]." ist Ostern am ".date("d.m.",$ostern); echo "<br><br><a href ostern.php> Nochmal</a>"; Am Ende des Codes besteht die Möglichkeit das Formular erneut aufzurufen. 13.1 Ein einfaches Registrierungsformular Das folgende beschreibt ein einfaches Formular mit dem sich ein Benutzer auf einer Webseite registrieren kann. Da hier mehrere Eingabefelder ausgefüllt werden müssen, sind im Vergleich zum Ostern- auch komplexere Abfragen notwendig. Nach dem Ausfüllen des Formulars sollen die Eingaben noch in einer Textdatei gespeichert werden. Das Formular soll vier Eingabefelder enthalten. Erfasst werden sollen Name, Kennwort und E-Mail Adresse. Um zu verhindern, dass sich ein Tippfehler beim Kennwort einschleicht, soll dieses zweimal eingegeben werden. Seite 42

# Formular function register($name, $password, $passcheck, $mail) echo "<table cellspacing= 2 border= 0 cellpadding= 2 > <tr><td colspan= 2 align= center ><strong>registrierung</strong></td></tr> <tr> <form action= register.php method= post > <td>name</td><td><input type= text name= name value= $name ></td> </tr> <tr> <td>kennwort</td><td><input type= password name= password value= $password > </td></tr><tr> <td>kennwort wiederholen</td><td><input type= password name= passcheck value= $passcheck ></td></tr><tr> <td>e-mail</td><td><input type= text name= mail value= $mail ></td> </tr> <tr> <td colspan= 2 align= center ><input type= submit name= senden value= Registrieren ></td> </tr> </table></form>"; Damit das Formular im Falle von falschen oder fehlenden Eingaben erneut aufgerufen werden kann, wird es als Funktion hinterlegt. An die Funktion register werden die vier Eingabewerte als Argumente übergeben. Der verwendete Variablenname wird im entsprechendn Formularfeld als value angegeben. Damit wird erreicht, dass richtige Eingaben nicht verloren gehen und vom Benutzer erneut eingegeben werden müssen. Als nächstes wird eine Funktion definiert, die zur Ausgabe der Fehlermeldungen dient. # Tabelle für Fehlerausgabe function error ($message) echo "<table cellspacing= 2 border= 0 cellpadding= 2 > <tr><td colspan= 2 align= center ><strong>".$message."</strong> </td></tr></table>"; Die Verwendung einer Funktion bewirkt, dass der Code nicht mehrfach eingegeben werden muss. Dann erfolgt die Definition der Fehlermeldungen. # Fehlermeldungen $error1 = "Fehler: Bitte alle Felder ausfüllen!"; $error2 = "Fehler: Passwort zu kurz, mindestens 8 Zeichen!"; $error3 = "Fehler: Passwörter stimmen nicht überein!"; $error4 = "Fehler: Ungültige E-Mail Adresse!"; Seite 43

PHP Einführung Aus den Fehlermeldungen ergeben sich die notwendigen Abfragen: Das Formular wurde nicht oder unvollständig ausgefüllt. Das gewählte Passwort ist zu kurz. Die eingegebenen Passwörter sind nicht identisch. Die eingegebene E-Mail Adresse ist ungültig. if (!$_POST["senden"]) register("", "", "", ""); Zuerst wird der Submit Button überprüft. Hat die Variable $_POST[ senden ] keinen Wert, wird das Formular mit vier leeren Strings aufgerufen. Die folgende else Anweisung enthält die entsprechenden if-anweisungen zur Überprüfung der eingegebenen Daten. else if ((empty ($_POST["name"])) (empty($_post["password"])) (empty($_post["passcheck"])) (empty($_post["mail"]))) error($error1); register($_post["name"], $_POST["password"], $_POST["passcheck"], $_POST["mail"] ); Zuerst wird überprüft ob mindestens eines der Felder nicht ausgefüllt wurde. Dazu wird die Funktion empty() verwendet. Ist die Bedingung erfüllt wird zuerst die entsprechende Fehlermeldung ausgegeben und anschließend das Formular mit den bereits eingegebenen Daten erneut aufgerufen. Anschließend erfolgt die Überprüfung der Kennwortlänge. elseif (strlen($_post["password"])<8) error($error2); register($_post["name"], "", "", $_POST["mail"] ); Wenn das eingegebene Kennwort weniger als acht Zeichen lang ist, erscheint die entsprechende Fehlermeldung und das Formular wird aufgerufen. Die Länge wird mit der Funktion strlen() ermittelt. Dann werden die beiden Kennwörter auf Übereinstimmung überprüft. Seite 44

elseif ($_POST["password"]!=$_POST["passcheck"]) error($error3); register($_post["name"], "", "", $_POST["mail"] ); Bei nicht-übereinstimmung erscheint die dazu gehörige Fehlermeldung und anschließend der erneute Formularaufruf. Zum Schluss wird noch die E-Mail Adresse überprüft. elseif(!eregi("@", $_POST["mail"])) error($error4); register($_post["name"], "", "", $_POST["mail"] ); Mit der Funktion eregi() wird überprüft, ob ein @-Zeichen in der Adresse enthalten ist. Wenn alle Felder richtig ausgefüllt wurden wird in eine weiter else-anweisung verzweigt. else $password = crypt($_post["password"], 16); $text = $_POST["name"].";".$password.";".$_POST["mail"]."\ r\ n"; $datei = fopen("daten.dat", "a+"); fwrite ($datei, $text); fclose($datei); echo "Daten eingetragen"; Zuerst wird das Kennwort verschlüsselt.zur Verschlüsselung wird die Funktion crypt() verwendet. Die Verschlüsselung ist dabei nicht umkehrbar. Anschließend werden die eingegebenen Daten als Zeichenkette, getrennt durch ein Semikolon (;), aneinander gehängt. Die Anweisungen \r und \n am Ende sorgen für einen Zeilenumbruch. Abschließend wird die Datei daten.dat geöffnet, der Inhalt der Variablen $text hineingeschrieben und die Datei wieder geschlossen. Seite 45

PHP Einführung 14 Lizenzvertrag Namensnennung Nicht-kommerziell Keine Bearbeitung 2.0 CREATIVE COMMONS IST KEINE RECHTSANWALTSGESELLSCHAFT UND LEISTET KEINE RECHTSBERATUNG. DIE WEITERGABE DIESES LIZENZENTWURFES FÜHRT ZU KEINEM MAN- DATSVERHÄLTNIS. CREATIVE COMMONS ERBRINGT DIESE INFORMATIONEN OHNE GEWÄHR. CREATIVE COMMONS ÜBERNIMMT KEINE GEWÄHRLEISTUNG FÜR DIE GELIEFERTEN INFORMA- TIONEN UND SCHLIEßT DIE HAFTUNG FÜR SCHÄDEN AUS, DIE SICH AUS IHREM GEBRAUCH ERGEBEN. Lizenzvertrag DAS URHEBERRECHTLICH GESCHÜTZTE WERK ODER DER SONSTIGE SCHUTZGEGENSTAND (WIE UNTEN BESCHRIEBEN) WIRD UNTER DEN BEDINGUNGEN DIESER CREATIVE COMMONS PUBLIC LI- CENSE ( CCPL ODER LIZENZVERTRAG ) ZUR VERFÜGUNG GESTELLT. DER SCHUTZGEGENSTAND IST DURCH DAS URHEBERRECHT UND/ODER EINSCHLÄGIGE GESETZE GESCHÜTZT. DURCH DIE AUSÜBUNG EINES DURCH DIESEN LIZENZVERTRAG GEWÄHRTEN RECHTS AN DEM SCHUTZGEGENSTAND ERKLÄREN SIE SICH MIT DEN LIZENZBEDINGUNGEN RECHTSVERBINDLICH EINVERSTANDEN. DER LIZENZGEBER RÄUMT IHNEN DIE HIER BESCHRIEBENEN RECHTE UNTER DER VORAUSSETZUNGEIN, DASS SIE SICH MIT DIESEN VERTRAGSBEDINGUNGEN EINVERSTAN- DEN ERKLÄREN. 1. Definitionen a) Unter einer Bearbeitung wird eine Übersetzung oder andere Bearbeitung des Werkes verstanden, die Ihre persönliche geistige Schöpfung ist. Eine freie Benutzung des Werkes wird nicht als Bearbeitung angesehen. b) Unter den Lizenzelementen werden die folgenden Lizenzcharakteristika verstanden, die vom Lizenzgeber ausgewählt und in der Bezeichnung der Lizenz genannt werden: Namensnennung, Nicht-kommerziell, Weitergabe unter gleichen Bedingungen. c) Unter dem Lizenzgeber wird die natürliche oder juristische Person verstanden, die den Schutzgegenstand unter den Bedingungen dieser Lizenz anbietet. d) Unter einem Sammelwerk wird eine Sammlung von Werken, Daten oder anderen unabhängigen Elementen verstanden, die aufgrund der Auswahl oder Anordnung der Elemente eine persönliche geistige Schöpfung ist. Darunter fallen auch solche Sammelwerke, deren Elemente systematisch oder methodisch angeordnet und einzeln mit Hilfe elektronischer Mittel oder auf andere Weise zugänglich sind (Datenbankwerke). Ein Sammelwerk wird im Zusammenhang mit dieser Lizenz nicht als Bearbeitung (wie oben beschrieben) angesehen. e) Mit SIE und Ihnen ist die natürliche oder juristische Person gemeint, die die durch diese Lizenz gewährten Nutzungsrechte ausübt und die zuvor die Bedingungen dieser Lizenz im Hinblick auf das Werk nicht verletzt hat, oder die die ausdrückliche Erlaubnis des Lizenzgebers erhalten hat, die durch diese Lizenz gewährten Nutzungsrechte trotz einer vorherigen Verletzung auszuüben. f) Unter dem Schutzgegenstand wird das Werk oder Sammelwerk oder das Schutzobjekt eines verwandten Schutzrechts, das Ihnen unter den Bedingungen dieser Lizenz angeboten wird, verstanden. g) Unter dem Urheber wird die natürliche Person verstanden, die das Werk geschaffen hat. Seite 46

h) Unter einem verwandten Schutzrecht wird das Recht an einem anderen urheberrechtlichen Schutzgegenstand als einem Werk verstanden, zum einer wissenschaftlichen Ausgabe, einem nachgelassenen Werk, einem Lichtbild, einer Datenbank, einem Tonträger, einer Funksendung, einem Laufbild oder einer Darbietung eines ausübenden Künstlers. i) Unter dem Werk wird eine persönliche geistige Schöpfung verstanden, die Ihnen unter den Bedingungen dieser Lizenz angeboten wird. 2. Schranken des Urheberrechts. Diese Lizenz lässt sämtliche Befugnisse unberührt, die sich aus den Schranken des Urheberrechts,aus dem Erschöpfungsgrundsatz oder anderen Beschränkungen der Ausschließlichkeitsrechte des Rechtsinhabers ergeben. 3. Lizenzierung. Unter den Bedingungen dieses Lizenzvertrages räumt Ihnen der Lizenzgeber ein lizenzgebührenfreies, räumlich und zeitlich ( die Dauer des Urheberrechts oder verwandten Schutzrechts) unbeschränktes einfaches Nutzungsrecht ein, den Schutzgegenstand in der folgenden Art und Weise zu nutzen: a) den Schutzgegenstand in körperlicher Form zu verwerten, insbesondere zu vervielfältigen, zu verbreiten und auszustellen; b) den Schutzgegenstand in unkörperlicher Form öffentlich wiederzugeben, insbesondere vorzutragen, aufzuführen und vorzuführen, öffentlich zugänglich zu machen, zu senden, durch Bild- und Tonträger wiederzugeben sowie Funksendungen und öffentliche Zugänglichmachungen wiederzugeben; c) den Schutzgegenstand auf Bild- oder Tonträger aufzunehmen, Lichtbilder davon herzustellen, weiterzusenden und in dem in a. und b. genannten Umfang zu verwerten; Die genannten Nutzungsrechte können für alle bekannten Nutzungsarten ausgeübt werden. Die genannten Nutzungsrechte beinhalten das Recht, solche Veränderungen an dem Werk vorzunehmen, die technisch erforderlich sind, um die Nutzungsrechte für alle Nutzungsarten wahrzunehmen. Insbesondere sind davon die Anpassung an andere Medien und auf andere Dateiformate umfasst. 4. Beschränkungen. Die Einräumung der Nutzungsrechte gemäß Ziffer 3 erfolgt ausdrücklich nur unter den folgenden Bedingungen: a) Sie dürfen den Schutzgegenstand ausschließlich unter den Bedingungen dieser Lizenz vervielfältigen, verbreiten oder öffentlich wiedergeben, und Sie müssen stets eine Kopie oder die vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) dieser Lizenz beifügen, wenn Sie den Schutzgegenstand vervielfältigen, verbreiten oder öffentlich wiedergeben. Sie dürfen keine Vertragsbedingungen anbieten oder fordern, die die Bedingungen dieser Lizenz oder die durch sie gewährten Rechte ändern oder beschränken. Sie dürfen den Schutzgegenstand nicht unterlizenzieren. Sie müssen alle Hinweise unverändert lassen, die auf diese Lizenz und den Haftungsausschluss hinweisen. Sie dürfen den Schutzgegenstand mit keinen technischen Schutzmaßnahmen versehen, die den Zugang oder den Gebrauch des Schutzgegenstandes in einer Weise kontrollieren, die mit den Bedingungen dieser Lizenz im Widerspruch stehen. Die genannten Beschränkungen gelten auch den Fall, dass der Schutzgegenstand einen Bestandteil eines Sammelwerkes bildet; sie verlangen aber nicht, dass das Sammelwerk insgesamt zum Gegenstand dieser Lizenz gemacht wird. Wenn Sie ein Sammelwerk erstellen, müssen Sie - soweit dies praktikabel ist - auf die Mitteilung eines Lizenzgebers oder Urhebers hin aus dem Sammelwerk jeglichen Hinweis auf diesen Lizenzgeber oder diesen Urheber entfernen. Wenn Sie den Schutzgegenstand bearbeiten, müssen Sie - soweit dies praktikabel ist- auf die Aufforderung eines Rechtsinhabers hin von der Bearbeitung jeglichen Hinweis auf diesen Rechtsinhaber entfernen. b) Sie dürfen die in Ziffer 3 gewährten Nutzungsrechte in keiner Weise verwenden, die hauptsächlich auf einen geschäftlichen Vorteil oder eine vertraglich geschuldete geldwerte Vergütung abzielt oder darauf gerichtet ist. Erhalten Sie im Zusammenhang mit der Einräumung der Nutzungsrechte ebenfalls einen Schutzgegenstand, ohne dass eine vertragliche Verpflichtung hierzu besteht, so wird dies nicht als geschäftlicher Vorteil oder vertraglich geschuldete geldwerte Vergütung angesehen, wenn keine Zahlung oder geldwerte Vergütung in Verbindung mit dem Austausch der Schutzgegenstände geleistet wird (z.b. File-Sharing). Seite 47

PHP Einführung c) Wenn Sie den Schutzgegenstand oder ein Sammelwerk vervielfältigen, verbreiten oder öffentlich wiedergeben, müssen Sie alle Urhebervermerke den Schutzgegenstand unverändert lassen und die Urheberschaft oder Rechtsinhaberschaft in einer der von Ihnen vorgenommenen Nutzung angemessenen Form anerkennen, indem Sie den Namen (oder das Pseudonym, falls ein solches verwendet wird) des Urhebers oder Rechteinhabers nennen, wenn dieser angegeben ist. Dies gilt auch für den Titel des Schutzgegenstandes, wenn dieser angegeben ist, sowie - in einem vernünftigerweise durchführbaren Umfang - die mit dem Schutzgegenstand zu verbindende Internetadresse in Form des Uniform-Resource-Identifier (URI), wie sie der Lizenzgeber angegeben hat, sofern dies geschehen ist, es sei denn, diese Internetadresse verweist nicht auf den Urhebervermerk oder die Lizenzinformationen zu dem Schutzgegenstand. Ein solcher Hinweis kann in jeder angemessenen Weise erfolgen, wobei jedoch bei einer Datenbank oder einem Sammelwerk der Hinweis zumindest an gleicher Stelle und in ebenso auffälliger Weise zu erfolgen hat wie vergleichbare Hinweise auf andere Rechtsinhaber. d) Obwohl die gemäß Ziffer 3 gewährten Nutzungsrechte in umfassender Weise ausgeübt werden dürfen, findet diese Erlaubnis ihre gesetzliche Grenze in den Persönlichkeitsrechten der Urheber und ausübenden Künstler, deren berechtigte geistige und persönliche Interessen bzw. deren Ansehen oder Ruf nicht dadurch gefährdet werden dürfen, dass ein Schutzgegenstand über das gesetzlich zulässige Maß hinaus beeinträchtigt wird. 5. Gewährleistung. Sofern dies von den Vertragsparteien nicht anderweitig schriftlich vereinbart bietet der Lizenzgeber keine Gewährleistung die erteilten Rechte, außer für den Fall, dass Mängel arglistig verschwiegen wurden. Für Mängel anderer Art, insbesondere bei der mangelhaften Lieferung von Verkörperungen des Schutzgegenstandes, richtet sich die Gewährleistung nach der Regelung, die die Person, die Ihnen den Schutzgegenstand zur Verfügung stellt, mit Ihnen außerhalb dieser Lizenz vereinbart, oder - wenn eine solche Regelung nicht getroffen wurde - nach den gesetzlichen Vorschriften. 6. Haftung. Über die in Ziffer 5 genannte Gewährleistung hinaus haftet Ihnen der Lizenzgeber nur für Vorsatz und grobe Fahrlässigkeit. 7. Vertragsende a) Dieser Lizenzvertrag und die durch ihn eingeräumten Nutzungsrechte enden automatisch bei jeder Verletzung der Vertragsbedingungen durch Sie. Für natürliche und juristische Personen, die von Ihnen eine Datenbank oder ein Sammelwerk unter diesen Lizenzbedingungen erhalten haben, gilt die Lizenz jedoch weiter, vorausgesetzt, diese natürlichen oder juristischen Personen erfüllen sämtliche Vertragsbedingungen. Die Ziffern 1, 2, 5, 6, 7 und 8 gelten bei einer Vertragsbeendigung fort. b) Unter den oben genannten Bedingungen erfolgt die Lizenz auf unbegrenzte Zeit ( die Dauer des Schutzrechts). Dennoch behält sich der Lizenzgeber das Recht vor, den Schutzgegenstand unter anderen Lizenzbedingungen zu nutzen oder die eigene Weitergabe des Schutzgegenstandes jederzeit zu beenden, vorausgesetzt, dass solche Handlungen nicht dem Widerruf dieser Lizenz dienen (oder jeder anderen Lizenzierung, die auf Grundlage dieser Lizenz erfolgt ist oder erfolgen muss) und diese Lizenz wirksam bleibt, bis Sie unter den oben genannten Voraussetzungen endet. 8. Schlussbestimmungen a) Jedes Mal, wenn Sie den Schutzgegenstand vervielfältigen, verbreiten oder öffentlich wiedergeben, bietet der Lizenzgeber dem Erwerber eine Lizenz für den Schutzgegenstand unter denselben Vertragsbedingungen an, unter denen er Ihnen die Lizenz eingeräumt hat. b) Sollte eine Bestimmung dieses Lizenzvertrages unwirksam sein, so wird die Wirksamkeit der übrigen Lizenzbestimmungen dadurch nicht berührt, und an die Stelle der unwirksamen Bestimmung tritt eine Ersatzregelung, die dem mit der unwirksamen Bestimmung angestrebten Zweck am nächsten kommt. c) Nichts soll dahingehend ausgelegt werden, dass auf eine Bestimmung dieses Lizenzvertrages verzichtet oder einer Vertragsverletzung zugestimmt wird, so lange ein solcher Verzicht oder eine solche Zustimmung nicht schriftlich vorliegen und von der verzichtenden oder zustimmenden Vertragspartei unterschrieben sind Seite 48