1. Zugriffsschema eines PHP-DoKuments Die serverseitige Scriptsprache PHP (Kurzform von PHP Hypertext Preprocessor oder Personal Home Page) ist speziell fr den Einsatz im Internet entwickelt. PHP ist fr alle gngigen Betriebssysteme als CGI-Version oder als Modulversion eines WEB-Servers verfgbar. ! xyz.php ! SERVER CLIENT User-Home /home/public_html Scriptsprache PHP-Modul Web-Server Apache Web-Client IE / Mozilla . . . ? xyz.php ? C C C C C
C <script language=php> C echo Ausgabe ; C </script>
Server Side Scripting
C <?php
C echo Ausgabe ;
C ?>
SGML-Schreibweise
1.1. Einbinden von PHP-Code in HTML Damit die serverseitigen PHP-Scripte korrekt verarbeitet werden knnen: muss der Dateiextender *.php (auch *.php4 bzw. *.php5) lauten. mssen innerhalb des Dokuments die Scriptelemente gekennzeichnet sein (siehe unten).
Theoretisch kann die Scripteinbindung an jeder Stelle (auch mehrmals) innerhalb des Dokuments erfolgen. Wenn das Script selber Ausgaben erzeugt (z.B. durch echo Ausgabe ;), sollten diese Teile innerhalb des HTML-Bodys (<body> . . . </body>) stehen.
C phpinfo(); // einzeiliger Kommentar C phpinfo(); /* C mehrzeiliger Kommentar C */ echo ist zu ende; Syntax Kommentar
1.2 Kommentare in PHP knnen auch genutzt werden um Abschnitte des Quellcodes zu Testzwecken auszublenden, da dieser nicht geparst wird.
C CLIENT fordert ein Document (REQUEST) C SERVER ldt Doc. aus DOC-ROOT oder USER-HOMES C Doc. wird dem PHP-Modul zum parsen bergeben . . . C . . . und an die SERVER-Instanz zurckgereicht C Doc.wird an den CLIENT gesendet (RESPONSE) Serverzugriff
PHP Grundlagen
Heinrich - Hertz - Schule Karlsruhe
Seite 2 von 6 Letzte Aktualisierung: 07.07.2005
2. Datentypen und Variablen PHP untersttzt u.a. die (skalaren) Datentypen: Boolean, Integer, Fliekomma-Zahlen und String sowie die zusammengesetzten Typen: Array und Object. ZurTyp-Umwandlung wird der Name des gewnschten Typs vor der umzuwandelnden Variablen in Klammern gesetzt.
C <?PHP
C $wert_vor = 3.14;
C $wert_nach = (int)$wert_vor;
C echo Erg = .$wert_nach;
C ?>
Folgende Umwandlungen sind mglich: (int), (integer) - nach integer (bool), (boolean) - nach boolean (float), (double), (real) - nach float (string) - nach string (array) - nach array
2.1. Wichtige Funktionen im Umgang mit Variablen Funktion Rckgabe Beschreibung gettype($var); int, string, array . . . unknow type, wertet den Datentyp aus isset($var); 1 $var angelegt / 0 sonst testet ob $var existiert unset($var); keine Rckgabe ($var wird entfernt) lscht eine Variable empty($var); TRUE $var ist 0 / leer oder nicht dekl. berprft, ob Zuweisung erfolgt ist is_int($var) TRUE $var ist Integer FALSE sonst testet konkreten Typ ( auch is_string(), is_array() . . . )
Vordefinierte Variablen Array Variablen, die . . . $_GET[] ber HTTP GET geliefert werden. $_POST[] ber HTTP POST geliefert werden. $_FILES[] ber HTTP Post Datei-Uploads geliefert werden. $_COOKIE[] ber HTTP Cookies geliefert werden. werden in PHP (ab Ver 4.x) ber die REGISTER-GLOBALS bergeben und sind abhngig vom Web-Server, der PHP- Version sowie den Parametern der php.ini Datei. $_SESSION[] aktuell in der Session registriert sind.
2.2. Ausgabe von Daten und Variablen Strings knnen durch doppelte ( ) oder einfache ( ) Anfhrungszeichen begrenzt werden. Zur Maskierung von Zeichen wird das Backslash verwendet (z.B. \n New Line oder \t Tabulator).
C $Vor = Alex; $Nach = Rimba;
Ansicht im Browser : C echo Herr $Vor vonundzu $Nach;
C Herr Alex vonundzu Rimba C echo Herr $Vor vonundzu $Nach;
C Herr $Vor vonundzu $Nach C echo Herr.$Vor. vonundzu .$Nach;
C Herr Alex vonundzu Rimba C $aus.= Herr ;
C C $aus.= $Vor. vonundzu .$Nach;
C
echo $aus;
Herr Alex vonundzu Rimba C echo <<<marke
viel sehr viel Text
viel <i>"... sehr viel"</i> Text
auch mit HTML TAGS
<br> auch mit <b>HTML TAGS</b>
1 marke;
1
PHP Grundlagen
Heinrich - Hertz - Schule Karlsruhe
Seite 3 von 6 Letzte Aktualisierung: 07.07.2005
3. Arrays (Felder) Arrays werden hufig eingesetzt, wenn die Anzahl der Variablen zur Entwicklungszeit nicht bekannt ist (z.B. Speichern von Ergebnissen einer Datenbankanfrage). C $name[Bezeichner]= Wert;
C echo $name[Bezeichner];
Wertzuweisung und Ausgabe
name : Bezeichner :
Wert : Arraybezeichnung Selektion einzelner Zellen (numerisch oder assoziativ) Zelleninhalt
Arrays werden (wie alle PHP-Variblen) nicht explizit sondern implizit (durch den 1. Aufruf) deklariert. Sie werden unterschieden nach der Art des Bezeichners (numerisch / assoziativ).
3.1 Eindimensionale indizierte und Assoziativ-Arrays
C $KUNDEN[0]= "Mller"; $KUNDEN[1]= "Maier";
$KUNDEN[2]= "Schulz"; $KUNDEN[3]= "Weber";
in Beispiel C wird ein indiziertes und mit C ein Assoziativ-Array erzeugt. C $PERSON["Name"]= "Mller";
$PERSON ["Alter"]= 26
$PERSON ["Gehalt"]= "2400 ";
eindimensionale Arrays (I)
Numerische Bezeichner (INDEX) werden ohne angegeben, Assozitav- Bezeichner wie Strings (also mit Hochkomma).
Neben der Einzelzuweisung zu jeder Feldzelle kann auch die PHP-Fkt. array() genutzt werden. C $KUNDE=array("Mller" , "Maier", "Schulz" ,"Weber"); C $PERSON=array("Name"=>"Mller", "Alter"=>26, "Gehalt"=>"2400 ");
eindimensionale Arrays (II)
3.2 Mehrdimensionale Arrays
C $DATA[0]["Name"]= "Mller";
$DATA[0]["Alter"]= 24;
$DATA[0]["Gehalt"]= "2400 ";
C $DATA[1]=array("Name"=>"Maier","Alter"=>26,
"Gehalt"=>"1200 ");
Arrays knnen mehrere Dimensionen haben, die durch die Angabe von mehreren Bezeichnern erzeugt werden.
Arrays knnen alle Datentypen enthalten, also Integer, Strings, Objekte und wiederum Arrays. Somit kann die nebenstehende Personaltabelle auch als eindimensionales Array mit Arrays als Feldinhalten erzeugt werden C $P0=array("Name"=>"Mller","Alter"=>24, "Gehalt"=>"2400 "); C $P1=array("Name"=>"Maier", "Alter"=>26, "Gehalt"=>"1200 "); //usw. C $DATA=array($P0,$P1,$P2,$P3);
C echo count($DATA);
Ausgabe ist 4 ( 0, 1, 2, 3 ) C echo count($DATA[0]); 3.3. Arrays als Funktionsargument Bei den meissten (eindim.) Array-Fkt (z.B. count() ) kann durch die Dimensionsangabe der gewnschte Bezug hergestellt werden.
Ausgabe ist 3 (Name,Alter,Gehalt) Nr Name Alter Gehalt 0 Mller 24 2400 1 Maier 26 1200 2 Schulz 37 nichts 3 Weber 28 3100
PHP Grundlagen
Heinrich - Hertz - Schule Karlsruhe
Seite 4 von 6 Letzte Aktualisierung: 07.07.2005
4. Operatoren Die Rangfolge der Operatoren entspricht den allgemeinen Regeln (z.B. Punkt vor Strich etc.).
$a + $b Summe von $a und $b.
UND $a and $b $a - $b Differenz von $a und $b.
ODER $a or $b $a * $b Produkt von $a und $b.
ausschlielich ODER $a xor $b $a / $b Quotient von $a und $b.
NICHT ! $a A r i t h m e t i s c h
$a % $b Rest von $a durch $b (ganz).
UND $a && $b L o g i s c h e
$a == $b gleich
UND $a & $b $a === $b identisch
ODER $a | $b $a != $b ungleich
ausschlielich ODER (XOR) $a ^ $b $a !== $b nicht identisch
NICHT ~ $a $a < $b kleiner als (bzw. > )
nach links verschieben $a << $b V e r g l e i c h
$a <= $b kleiner gleich als (bzw. >= )
nach rechts verschieben $a >> $b B i t - O p e r a t o r e n
5. Kontrollstrukturen C if (Bedingung) C { Anweisung(en);} C [else { Anweisung(en); }] PHP kennt fr die meisten Kontroll- strukturen (funktional-identische) Syntax- Varianten um den Umsteigern aus anderen Sprachen den Einstieg in PHP zu erleichtern.
ein [zwei]-seitige Verzweigung
C while (Bedingung) C do { Anweisung(en);} C { Anweisung(en);} C while (Bedingung)
Kopfgesteuerte bedingte Schleife
Fussgesteuerte bedingte Schleife
C for(Init;Bedingung;Inkrement) C foreach($array as $key=>$val) C { Anweisung(en);} C { Anweisung(en);}
Zhlergesteuerte Schleife
Array Schleife
6. Unterprogramme und Modularisierung Funktionen werden hufig in separate Dateien ausgelagert und mit include eingebunden, wodurch neben der Modularisierung auch ein Schutz (z.B. htacces) erreicht werden kann.
C <?php C <?php C include("funktion.inc.php"); C function name($par1,$par2,...) C $erg=name($wert1,$wert2, ...); C { Anweisung(en) ; C echo $erg; ?> C return $ruckgabe;
aufruf.php
} C ?>
funktion.inc.php Mit include bzw. require knnen auch andere (beliebige Dateien) eingebunden werden.
PHP Grundlagen
Heinrich - Hertz - Schule Karlsruhe
Seite 5 von 6 Letzte Aktualisierung: 07.07.2005
7. Parameter (Variablen)-bergabe an PHP-Scripte Um einem PHP-Script beim Aufruf Werte zu bergeben vom Client zum Server, werden die bertragungsmethoden GET oder POST verwendet. Diese unterscheidenen sich u.a. in : Daten werden durch Anhngen an die URL bermittelt
Daten werden im HEADER des Serveraufrufes gespeichert Daten sind in der Adresszeile des Browser sicht - und nderbar
Daten werden clientseitig nicht gespeichert (nicht sichtbar im Verlauf oder in Favoriten) G E T
Kapazitt ist auf 2 KB beschrnkt keine Beschrnkung der Datengrsse P O S T
7.1 Aufruf einer GET-bertragung (URL in HTML bzw. PHP)
C <a href="script2.php?wert1=10&wert2=20">WERTE fr Script2</a>
Link in der HTML-Datei script1.html
C <?php $W1=1*10; $W2=2*10; C echo "<a href=\"script2.php?wert1=".$W1."&wert2=".$W2."\">LOS</a>"; C ?>
Link in der HTML-Datei script1.php
Der Zugriff auf bergabewerte . . .
C <?php
C $Var1=$_GET["wert1"];
C $Var2=$_GET["wert2"];
C echo "Danke fr $Var1 $Var2";
C ?>
Formular in script3.php
erfolgt ber das assoziative GLOBAL- ARRAY $_GET welches fr jede Variable einen Eintrag enthlt. Diese mssen im Script explizit gelesen werden.
TIPP: mit extract($_GET); stehen automatisch alle GET-Variablen zur Verfgung, was nur fr Test- zwecke verwendet werden sollte.
7.2. POST-bertragung (aus Formularen) erfolgt meist ber ein HTML-Formular (welches auch PHP generiert sein kann). Die Auswertung (in script4.php) ist hnlich zu script2.php mit dem Unterschied, dass nun auf das GLOBAL- ARRAY $_POST zugegriffen werden muss (auch hier kommen die selben Mechanismen zum Tragen). Die assoziativ Bezeichnung der $_POST["xxx"] Elemente werden duch die name-Attribute der entsprechenden input-TAGS definiert (case-sensitiv !). C <form target="script4.php" methode="POST">
C <input type="Text" name="wert1"></input>
C <input type="Text" name="wert2"></input>
C <input type="Submit" value="schicken"></input>
C </form>
Formular in script3.html
Anhang
Heinrich - Hertz - Schule Karlsruhe
Seite 6 von 6 Letzte Aktualisierung: 07.07.2005
A1 ntzliche String-Funktionen
Syntax /Beispiel Erklrung 1 string addcslashes(string, charlist) addcslashes(rz.uni.ka.de,.)= rz\.uni\.ka\.de Stellt jedem Zeichen aus string das in charlist enthalten ist ein\ voran. 2 string chr(int) / int ord(string) chr(65)=A / ord(A)=65 Wandelt Buchstaben in ASCII Wert bzw. ASCII in Buchstaben um. 4 mixed count_chars(string [,mode]) [mode = 0 bis 4] Gibt (entsprechend mode) die Auftritts- hufigkeit der Buchstaben in string zurck. 5 int crc32(string) Berechnet polynomischen CRC32-Wert. 6 string md5(string) Verschlsselt nach der MD5-Methode. 7 string crypt(string [,string salt]) Verschlsselt string (One-Way-Verfahren). 8 array explode(separator, string [,int]) string implode(string, array) Teilt string an Hand von seperator Fgt ein Array zu einem string zusammen. 10 string htmlentities(string[, int quote_style]) Wandelt Sonderzeichen in HTML-Code. 11 string ltrim(string) / rtrim(str) / trim(str) Lscht linke/rechte/alle Leerzeichen. 14 string str_repeat(string, int ) Verlngert string int mal. 15 string str_replace(needle, string, haystack) str_replace("@","#","rim@de")=rim#de Sucht in haystack alle Zeichen aus needle und ersetzt sie durch Zeichen aus string. 16 string strchr(haystack, needle) string strrchr(haystack, needle) strchr(rimba@www@de,"@")=@www@de Sucht in haystack nach dem 1. (strchr) bzw. letzten (strrchr)Auftreten von needle und gibt den Rest zurck. 18 int strpos(haystack, needle) int strrpos(haystack, needle) strpos(rimba@www@de,"@")= 5 Sucht in haystack nach dem 1. (strpos) bzw. letzten (strrpos) Auftreten von needle und gibt die Position zurck. 20 int strlen(string) Gibt die Lnge von string an. 21 string strrev(string) Dreht string um. 22 string strtok(string, needle) Zerlegt string an der Pos. needle (auch Rek.) 23 string strtolower(string) string strtoupper(string) Wandelt string in Kleinbuchstaben (lower) bzw. Grossbuchstaben (upper) um. 25 string substr(string, start [,length]) Gibt Teilstr. von start len Zeichen zurck. 26 int substr_count(haystack, needle) Gibt an wie oft needle in haystack vorkommt