Zuletzt aktualisiert am 25. Dezember 2023 von Lars
Diese kleine Tutorial zu PHPist primär für mich als Gedankenstütze entstanden. Eventuell hilft es auch Einsteiger mit Kenntnissen einer anderen Programmiersprache. Gute HTML-Kenntnisse sind zum Verständnis nötig.
Was ist PHP?
PHP ist eine Skriptsprache, mit der grosse Projekte realisiert werden können. Der PHP-Interpreter läuft hier auf dem Webserver und liefert als Output reguläres HTML. PHP wird also serverseitig ausgeführt wird. Der Webserver muss dazu PHP unterstützen. Er führt den Code aus und schickt das Ergebnis an den Browser.
PHP-Anweisungen kann man direkt mit HTML kombinieren. Allerdings muss die Dateiendung php sein, sonst werden die Befehle nicht ausgeführt.
Der Webserver muss wissen, wo der PHP-Code beginnt. In der Datei selber kann sowohl PHP-Code als auch normales HTML stehen. Damit der Interpreter weiss, wo er PHP-Code findet, ist dieser in <?php ?> einzuschliessen. Jede PHP-Anweisung endet mit einem Semikolon.
Die Programmiersprache wurde 1995 von Rasmus Lerdorf erfunden.
<?php ... PHP-Code ... ?>
Das erste kleine Programm...
<html> <head> <title>PHP-Info</title> </head> <body> <h1>Infos zu PHP</h1> <?php phpinfo(); ?> </body> </html>
...gibt die php-Informationen aus. Darin enthalten sind die Grundeinstellungen für den PHP-Interpreter.
Um die Datei ausführen zu können, wird ein Webserver mit PHP-Unterstützung gebraucht. Dies kann eine Webpräsenz mit PHP-Unterstützung sein, oder ein lokaler Server. Gut geeignet für lokale Tests ist das Programm-Paket Xampp, was eine einfach zu installierende komplette Umgebung liefert. Eine Anleitung zu Xampp würde aber den Rahmen dieses Tutorials sprengen.
Probieren Sie mal das folgende Programm aus:
<html> <head><title>Ausgabe</title></head> <body> <?php echo "<h1>Ich lerne PHP</h1>n"; echo "<p>Wow, tatsächlich werde ich jetzt bald PHP können!</p>n"; ?> </body> </html>
Schauen Sie sich bitte auch den HTML-Quelltext der Seite an. Dort ist von PHP nichts mehr zu sehen, sondern nur noch die mit echo ausgegebenen HTML-Tags.
Escape-Sequenzen / Ersatzdarstellungen
Aber was bedeutet n?
n ist eine Escape-Sequenz und erzeugt einen Zeilenumbruch. Escape-Sequenzen werden immer durch einen Backslash eingeleitet. Sie haben aber nur Auswirkungen im HTML-Quelltext. Bei der Ausgabe interessiert sich ein Browser für solche Zeilenumbrüche nicht, der geht nach wie vor nur über HTML-Tags.
Weitere Escape-Sequenzen sind z.B.
- \
- Backslash
- t
- Tabulator
- r
- Wagenrücklauf
Variablen in PHP
Wir passen das Programm jetzt etwas an.
<?php $header = "Ich lerne PHP"; $text = "Wow, tatsächlich werde ich jetzt bald PHP können!"; ?> <html> <head><title>Ausgabe</title></head> <body> <?php echo "<h1>$header</h1>n"; echo "<p>$text</p>n"; ?> </body> </html>
- Variablen müssen in PHP nicht deklariert werden
- Der Typ wird automatisch erkannt
- Intern wird mit String, Integer, Float und Boolean gearbeitet
- Alle Variablen beginnen mit einem $-Zeichen
- Beim Variablennamen wird zwischen Gross- und Kleinschreibung unterschieden
Arrays in PHP
Arrays sind Felder mit mehreren Variablen. Zum besseren Verständnis hier das weiter umgebaute Beispiel:
<?php $text = array(); $text[0] = "Ich lerne PHP"; $text[1] = "Wow, tatsächlich werde ich jetzt bald PHP können!"; ?> <html> <head><title>Ausgabe</title></head> <body> <?php echo "<h1>$text[0]</h1>n"; echo "<p>$text[1]</p>n"; ?> </body> </html>
Arrays werden also durch...
$variable = array();
...initialisiert.
Alternativ hätte man auch die Initalisierung samt Wertebelegung in eine Zeile packen können.
$text = array("Ich lerne PHP", "Wow, tatsächlich werde ich jetzt bald PHP können!");
Solche langen Zeilen werden jedoch schnell unübersichtlich, daher sollte man eher Abstand davon nehmen.
Assoziative Arrays
Es kann nervig sein, sich immer die numerischen Indizes merken zu müssen. Um das ganze eingängiger zu machen, gibt es auch assoziative Arrays. Bei denen werden die Elemente über geeignete Text-Werte angesprochen. Hier ein Beispiel:
<?php $tag = array( "so" => "Sonntag", "mo" => "Montag", "di" => "Dienstag", "mi" => "Mittwoch", "do" => "Donnerstag", "fr" => "Freitag", "sa" => "Samstag"); ?> <html> <head><title>Ausgabe</title></head> <body> <?php echo "<h1>Wochentage</h1>n"; echo "<p>mo steht für $tag[mo] und do steht für $tag[do] </p>n"; ?> </body> </html>
Im obigen Beispiel wurde die Belegung eigentlich in einer Zeile gemacht, die sich einfach über mehrere Textzeilen erstrechkt (Klammer und Setzung von Semikolon beachten).
Schleifen
Gerade im Zusammenhang mit Arrays sind Schleifen sehr interessant um Codezeilen zu sparen.
foreach-Schleife
Fangen wir - zugegebenermassen didaktisch wenig sinnvoll - mit einem der schwereren Schleifen-Konstrukten an, der foreach-Schleife. Mit der foreach-Schleife lassen sich in assoziativen Arrays recht einfach Indizes und Werte ansprechen. Als Anfänger kommt man mit den Zusammenhängen oft lange nicht klar, daher hier einmal in einem Beispiel entsprechend graphisch hervorgehoben.
Auch die Indizes lassen sich mit ausgeben.
Hier noch zwei Beispiele:
<!DOCTYPE html> <html> <head> <title>foreach</title> <meta charset='utf-8' /> </head> <body> <h1>Ich gebe die Tage aus</h1> <?php $tag[1] = "Montag"; $tag[2] = "Dienstag"; $tag[3] = "Mittwoch"; $tag[4] = "Donnerstag"; $tag[5] = "Freitag"; $tag[6] = "Samstag"; $tag[7] = "Sonntag"; foreach ($tag as $value) { echo '$value<br>'; } ?> </body> </html>
Noch einmal foreach. Auch hier kommt ein assoziatives Array zum Einsatz. Statt numerischen Indizes werden hier die Kurzzeichen der Kantone verwendet.
<!DOCTYPE html> <html> <head> <title>foreach</title> <meta charset="utf-8" /> </head> <body> <h1>Ich gebe einige Kantone mit Ihren Kurzzeichen aus</h1> <?php $kanton['AG'] = "Aargau"; $kanton['BL'] = "Basel-Land"; $kanton['BS'] = "Basel-Stadt"; $kanton['BE'] = "Bern"; $kanton['JU'] = "Jura"; $kanton['OW'] = "Obwalden"; $kanton['SG'] = "St. Gallen"; $kanton['ZH'] = "Zürich"; foreach ($kanton as $key => $value) { echo "$key : $value<br>"; } ?> </body> </html>
for-Schleife
Die for-Schleife schauen wir uns am Besten anhand des folgenden Beispiels an.
<?php $tag = array( "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"); ?> <html> <head><title>Ausgabe</title></head> <body> <?php echo "<h1>Wochentage ausgeben mit for</h1>n"; for($i=0; $i < count($tag); $i++) { echo "$tag[$i]</p>n"; } ?> </body> </html>
Noch ein Beispiel zur for-Schleife:
<!DOCTYPE html> <html> <head> <title>Schleife</title> <meta charset="utf-8" /> </head> <body> <h1>Ich zähle von 1 bis 10</h1> <?php for ($i=1; $i<11; $i++) { echo "$i"; echo "<br>"; } ?> </body> </html>
while-Schleife
Auch die while-Schleife am Besten anhand eines Beispiels an.
<?php $tag = array( "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"); ?> <html> <head><title>Ausgabe</title></head> <body> <?php echo "<h1>Wochentage ausgeben mit while</h1>n"; $i = 0; while($i < count($tag)) { echo "$tag[$i]</p>n"; $i++; } ?> </body> </html>
do-while-Schleife
Beispiel zur Do-While-Schleife
<?php $i = 5; do { echo $i; $i--; } while ($i > 0); ?>
++ und --
In den obigen Beispielen haben wir bereits die Operatoren ++ und -- kennen gelernt.
++ erhöht die Variable um 1, -- erniedriegt sie.
Vergleichoperatoren
Mit Vergleichoperatoren werden zwei Werte miteinander verglichen.
Operator | Bedeutung |
---|---|
== | gleich |
=== | gleich - auch selber Typ |
!= oder <> | ungleich |
< | kleiner |
> | grösser |
< | kleiner |
>= | grösser gleich |
< = | kleiner gleich |
Anwendung z.B.
if $a == "1" { ... }
Logische Operatoren
Mit logische Operatoren werden Bedingungen miteinander verknüpft
- &&
- and
- Logisches Und
- ||
- or
- Logisches Oder
- !
- Logisches Nicht
Abfragen
if, else, elseif
Mit Abfragen kann der Programmablauf gesteuert werden. Mit if wird auf eine Bedingung überprüft. else leitet einen Programm-Block ein, der aufgerufen wird, wenn die vorherige if-Bedingung nicht erfüllt ist. elseif funktioniert wie else, nur dass zusätzlich eine weitere Bedingung überprüft wird.
<?php echo "<h1>if, else, elseif</h1>"; $i = 10; if ($i < 10) { echo "i ist kleiner als 10"; } elseif ($i > 10) { echo "i ist grösser als 10"; } else { echo "i genau 10."; } ?>
switch, case, break, default
Will man eine Variable auf mehrere Möglichkeiten prüfen, dann ist das switch, case, break, default-Konstrukt die richtige Wahl:
<?php echo "<h1>switch, case, break, default</h1>"; $auto = "Tesla"; switch ($auto) { case "Audi": echo "Auto ist Audi"; break; case "BMW": echo "Auto ist BMW"; break; case "Tesla": echo "Auto ist Tesla"; break; case "VW": echo "Auto ist Tesla"; break; default: echo "Ich kenne die Automarke nicht"; } ?>
Mit dem Schlüsselwort switch leitet man das Konstrukt ein und gibt die zu überprüfende Variable an. Mit case überprüft man diese. Mit break bricht man die Überprüfung ab. Das Macht in der Regel Sinn, da ohne break die komplette Abfrage auch bei einem Treffer durchlaufen wird. Mit default leitet man einen Zweig ein, der dann ausgeführt wird, wenn keine der bisherigen case-Anweisungen zutreffen.
Übergabe von Werte / Formulare
Wie immer folgt hier erst das Beispiel:
<html> <body> <p> <h1>Menu</h1> <ul> <li><a href="<?php echo $_SERVER['PHP_SELF']?>?wahl=1">Erster Eintrag</a></li> <li><a href="<?php echo $_SERVER['PHP_SELF']?>?wahl=2">Zweiter Eintrag</a></li> <li><a href="<?php echo $_SERVER['PHP_SELF']?>?wahl=3">Dritter Eintrag</a></li> </ul> </p> <?php if (!empty($_REQUEST['wahl'])) { echo "<h2>Sie haben Punkt ".$_REQUEST['wahl']. " gewählt.</h2>n"; switch ($_GET['wahl']) { case 1: echo "1"; break; case 2: echo "2"; break; case 3: echo "3"; break; default: echo "Nix davon!"; } } ?> </body> </html>
Mittels $_SERVER['PHP_SELF'] holen wir uns den aktuellen Pfad zur Datei. Hinter den Link setzen wir ?wahl=wert. Dies ist eine der möglichen Werteüberbergaben. Wir erzeugen eine Variable Namens wahl, der wir einen Wert "wert" zuweisen. Das ganze ist aber auch recht risikobehaftet: Jeder kann den Wert in der URL-Zeile ändern. Es sollte klar sein, dass keinesfalls vertrauliche Parameter wir Passwörter etc. so übergeben werden dürfen.
Einen derartigen "URL-Wert" kann man entweder mit $_GET oder $_REQUEST auslesen.
Im nächsten Programmcode werten wir diesen Wert aus. Die Datei ruft sich immer wieder selber auf, so dass ein richtiges Menü entsteht.
Werteuebergabe mit Formulare...
Beispiel 1
formular.html
<!DOCTYPE html> <html> <head> <title>Formular</title> <meta charset="utf-8" /> <link rel="stylesheet" href="style.css" type="text/css" media="screen" /> </head> <body> <form name="formular"> <input name="name" type="text" placeholder="Nachname" /> <input name="email" type="email" placeholder="email@example.org" required /> <span class="show"><input name="gender" type="text"/></span> <input type="submit" value="Abschicken" formmethod="get" formaction="formaction.php" formtarget="_self" /> </form> </body> </html>
In das Formular haben wir eine kleine Spam-Falle aufgabaut. Das Feld gender wird mittels CSS ausgeblendet. Hierzu steht in der style.css die folgende Anweisung.
style.css
span.show { display:none; }
Ein Spambot ignoriert die Anweisung (daher ist sie auch in einem separaten CSS ausgelagert) hoffentlich und füllt das Feld aus.
formaction.php
<!DOCTYPE html> <html> <head> <title>Formularauswertung</title> <meta charset="utf-8" /> <link rel="stylesheet" href="p.css" type="text/css" media="screen" /> </head> <body> <h1>Formularauswertung</h1> <?php $name=$_GET["name"]; $email=$_GET["email"]; $spam=$_GET["gender"]; if ($spam === "") { echo "<h2>Ihre Eingaben</h2>"; echo "<p>$name</p>"; echo "<p>$email</p>"; } else { echo "Are you spamming me?"; } ?> </body> </html>
Unschön an der Datenübertragung mit der GET-Methode ist, dass die Parameter hier im Klartext in der URL übertragen werden.
Arbeiten mit Dateien
fopen(), feof, fgets, fclose
fopen — Öffnet eine Datei oder URL und gibt ein Handle darauf zurück. Es sollte immer geprüpft werden, ob das Öffnen erfolgreich war. Hier sind die möglichen Modis zu beachten, siehe auch fopen in der Referenz.
feof — Prüft, ob ein Dateizeiger am Ende der Datei steht.
fgets — Liest eine Zeile von der Position des Dateizeigers.
fclose — Schließt einen offenen Dateizeiger.
<?php $datei="beitraege.txt"; $dh = fopen($datei, "r"); if(!$dh) { print "Kann Datei "$datei" nicht öffnen!"; } else { for ($i = 0; !feof($dh); $i++) { $zeile = fgets($dh); if ($zeile != "") { echo "$zeile<br />n"; } } fclose($dh); } ?>
fputs(), fwrite()
fputs ist ein Alias von fwrite - Beides zum Schreiben von Dateien
<?php $datei="beitraege.txt"; $dh = fopen($datei, "a"); if(!$dh) { print "Kann Datei "$datei" nicht öffnen!"; } else { { echo ("Schreibe Trallala in Datei!<br />"); fputs ($dh, "Trallalan"); } fclose($dh); } ?>
XML mit PHP
Seit PHP5 kann PHP auch ganz gut mit XML umgehen.
XML mit PHP - Beispiel 1
xml.php
<?php $dom = new DOMDocument('1.0', 'utf-8'); $root = $dom->createElement('Members'); $dom->appendChild($root); $root->appendChild($firstNode = $dom->createElement("Member")); $firstNode->appendChild($dom->createElement("Name", "Max")); $firstNode->appendChild($dom->createElement("Kanton", "AG")); $root->appendChild($firstNode = $dom->createElement("Member")); $firstNode->appendChild($dom->createElement("Name", "Moritz")); $firstNode->appendChild($dom->createElement("Kanton", "LU")); $root->appendChild($firstNode = $dom->createElement("Member")); $firstNode->appendChild($dom->createElement("Name", "Zorro")); $firstNode->appendChild($dom->createElement("Kanton", "ZH")); header('Content-type: text/xml; charset=utf-8'); echo $dom->saveXML(); ?>
...erzeugt...
Hängt man...
$dom->save("write.xml");
...als letzten Befehl mit dran, dann wird die XML-Datei als write.xml abgespeichert.
XML mit PHP - Beispiel 2
read.php - Liest Werte aus XML-Datei aus und zeigt sie an.
<?php $doc = new DOMDocument(); $doc->load ( 'write.xml' ); $members = $doc->getElementsByTagName ("Member"); $i = 1; foreach ( $members as $member ) { $name = $member->getElementsByTagName ("Name" ); $name = $name->item(0)->nodeValue; $kanton = $member->getElementsByTagName ("Kanton" ); $kanton = $kanton->item(0)->nodeValue; echo "$i.Wert: $name $kanton<br>"; $i++; } ?>
XML und PHP - Beispiel 3
Gegeben ist die folgende XML-Datei
<?xml version="1.0" encoding="utf-8"?> <artikeldaten> <artikel nummer="1"> <name>Sony Alpha 6000 Systemkamera</name> <preis>499.0</preis> </artikel> <artikel nummer="2"> <name>Samson Meteorite USB Mikrofon</name> <preis>23.91</preis> </artikel> <artikel nummer="3"> <name>15 Zoll Radkappen QUAD Bicolor – universell</name> <preis>34.95</preis> </artikel> <artikel nummer="4"> <name>BODUM 1446-01 Milchschäumer LATTEO</name> <preis>23.95</preis> </artikel> </artikeldaten>
Mittels
simplexml_load_file
lässt sich diese Datei ausgeben.
<html> <body> <?php $data = simplexml_load_file("artikel.xml"); print "<pre>n"; foreach($data as $k => $v) { $artNr = $v->attributes(); print "$artNr -------------------------------------------------------------n"; foreach($v as $k1 => $v2) { print "$k1: $v2<br>"; } } print "</pre>n"; ?> </body> </html>
Ergebnis
1 ------------------------------------------------------------- name: Sony Alpha 6000 Systemkamera preis: 499.0 2 ------------------------------------------------------------- name: Samson Meteorite USB Mikrofon preis: 23.91 3 ------------------------------------------------------------- name: 15 Zoll Radkappen QUAD Bicolor – universell preis: 34.95 4 ------------------------------------------------------------- name: BODUM 1446-01 Milchschäumer LATTEO preis: 23.95
Cookies
Durch Cookies kann man den Browser eines Benutzers wiedererkennen. In einem Cookie kann man bestimmte - wenige - Daten abspeichern.
Ein Cookie setzt man mit
setcookie ( cookiename, cookieinhalt, zeit)
cookiename
Name des Cookies
cookieinhalt
Der Inhalt des Cookies. Der Inhalt wird auf dem Gerät des Benutzers gespeichert
zeit
zeit definiert den Zeitpunkt, an dem das Cookie ungültig wird. Dies ist die Anzahl Sekunden seit Beginn der Epoche. Am einfachsten setzt man diesen Wert mittels time()+Anzahl Sekunden Gültigkeitsdauer.
60*60*24*30
steht z.B. für 30 Tage.
Einen Befehl zum Löschen eines Cookies gibt es nicht. Um ein Cookie zu löschen sendet man es erneut mit einer negativen Gültigkeit.
Beispiel
setcookie("test", "abc", time()-3600*24*100);
Cookies liest man über $_COOKIE aus. Der Wert ist aber nach erst vorhanden, wenn nach "setcookie" der Browser neu gestartet wurde.
Beispiel 1
<?php setcookie("test", "abc", time()+3600*24*3); if (!empty($_COOKIE['test'])) { echo "Hab ein Cookie namens test gefunden. Es hat den Inhalt "; echo($_COOKIE['test']); echo ".n"; } ?>
Beispiel 2
<?php echo "Es sind insgesamt " . count($_COOKIE) . " Cookies gesetzt: <br /><br/>n"; foreach($_COOKIE as $cookieName => $cookieValue) { echo "Cookie <b>$cookieName</b>: $cookieValue<br />n"; } ?>
</pre
Danke an php-dummies.de .
Sessions
Daten können auch in sogenannten Sessions gespeichert werden. Diese laufen, bis der Browser beendet wird oder eine bestimmte Maxminalzeit. Bei Chrome bleibt die Session auch nach Schliessen des Browsers noch bestehen. Erst wenn man Cookies löscht, werden auch die Daten in der Session gelöscht.
An diesem Beispiel können wir die grundsätzliche Funktionsweise einsehen.
<?php session_start(); if(!empty($_SESSION['mysession'])) { echo "Inhalt der Session: "; $value = $_SESSION['mysession']; echo $value; echo "n"; } else { $_SESSION['mysession'] = "Das ist mein Session-Wert"; } ?> <html> <body> <a href="<?php print $_SERVER['PHP_SELF']?>"> Prüfe, ob Session-Cookie gesetzt</a> </body> </html>
Mit
session_start();
wird eine Session erzeugt oder wieder aufgenommen.
Die Werte der Session werden in das Array
$_SESSION
gespeichert.
Referenz / Beispiele alphabetisch
$_COOKIE
<?php setcookie("test", "abc", time()+3600*24*3); if (!empty($_COOKIE['test'])) { echo "Hab ein Cookie namens test gefunden. Es hat den Inhalt "; echo($_COOKIE['test']); echo ".n"; } ?>
$_GET
Ein assoziatives Array von Variablen, das die dem aktuellen Skript mittels URL-Parameter übergebenen Werte enthält.
$_REQUEST
Ein assoziatives Array, das den Inhalt von $_GET, $_POST und $_COOKIE enthält.
$_SERVER['PHP_SELF']
Mittels $_SERVER['PHP_SELF'] wird der aktuellen Pfad zur Datei angesprochen.
$_SESSION
$_SESSION
enthält die Werte einer Session.
break
Mit break bricht man die Überprüfung in einem Switch-Konstrukt ab.
<?php echo "<h1>switch, case, break, default</h1>"; $auto = "Tesla"; switch ($auto) { case "Audi": echo "Auto ist Audi"; break; case "BMW": echo "Auto ist BMW"; break; case "Tesla": echo "Auto ist Tesla"; break; case "VW": echo "Auto ist Tesla"; break; default: echo "Ich kenne die Automarke nicht"; } ?>
case
Mit case überprüft man die Bedingungen in einem Switch-Konstrukt.
<?php echo "<h1>switch, case, break, default</h1>"; $auto = "Tesla"; switch ($auto) { case "Audi": echo "Auto ist Audi"; break; case "BMW": echo "Auto ist BMW"; break; case "Tesla": echo "Auto ist Tesla"; break; case "VW": echo "Auto ist Tesla"; break; default: echo "Ich kenne die Automarke nicht"; } ?>
date()
Formatiert ein(e) angegebene(s) Ortszeit/Datum
<html> <head> <title></title> </head> <body> <p>Heute ist <?php print date("d.m.y", time()); ?> </p> </body> </html>
Date bei php.net.
default
Mit default leitet man einen Zweig in einer Switch-Anweisung ein, der dann ausgeführt wird, wenn keine der bisherigen case-Anweisungen zutreffen.
<?php echo "<h1>switch, case, break, default</h1>"; $auto = "Tesla"; switch ($auto) { case "Audi": echo "Auto ist Audi"; break; case "BMW": echo "Auto ist BMW"; break; case "Tesla": echo "Auto ist Tesla"; break; case "VW": echo "Auto ist Tesla"; break; default: echo "Ich kenne die Automarke nicht"; } ?>
do-while-Schleife
<?php $i = 5; do { echo $i; $i--; } while ($i > 0); ?>
echo()
Ausgabe von Text
echo "<h1>Wochentage</h1>n";
else
<?php echo "<h1>if, else, elseif</h1>"; $i = 10; if ($i < 10) { echo "i ist kleiner als 10"; } elseif ($i > 10) { echo "i ist grösser als 10"; } else { echo "i genau 10."; } ?>
elseif
<?php echo "<h1>if, else, elseif</h1>"; $i = 10; if ($i < 10) { echo "i ist kleiner als 10"; } elseif ($i > 10) { echo "i ist grösser als 10"; } else { echo "i genau 10."; } ?>
Escape-Sequenz
- \
- Backslash
- n
- Neue Zeile
- t
- Tabulator
- r
- Wagenrücklauf
feof()
fclose — Schliesst einen offenen Dateizeiger
<?php $datei="beitraege.txt"; $dh = fopen($datei, "r"); if(!$dh) { print "Kann Datei "$datei" nicht öffnen!"; } else { for ($i = 0; !feof($dh); $i++) { $zeile = fgets($dh); if ($zeile != "") { echo "$zeile<br />n"; } } fclose($dh); } ?>
feof()
feof — Prüft, ob ein Dateizeiger am Ende der Datei steht.
<?php $datei="beitraege.txt"; $dh = fopen($datei, "r"); if(!$dh) { print "Kann Datei "$datei" nicht öffnen!"; } else { for ($i = 0; !feof($dh); $i++) { $zeile = fgets($dh); if ($zeile != "") { echo "$zeile<br />n"; } } fclose($dh); } ?>
fgets()
fgets — Liest eine Zeile von der Position des Dateizeigers.
<?php $datei="beitraege.txt"; $dh = fopen($datei, "r"); if(!$dh) { print "Kann Datei "$datei" nicht öffnen!"; } else { for ($i = 0; !feof($dh); $i++) { $zeile = fgets($dh); if ($zeile != "") { echo "$zeile<br />n"; } } fclose($dh); } ?>
fopen()
fopen — Öffnet eine Datei oder URL und gibt ein Handle darauf zurück. Es sollte immer geprüpft werden, ob das Öffnen erfolgreich war.
resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )
Bei fopen muss der entsprechende Mode beachtet werden. Er legt fest, ob eine Datei zum Lesen, Schreiben, etc. geöffnet wird:
- r
- Lesen
- r+
- Lesen und Schreiben, Dateizeiger auf Anfang
- w
- Schreiben, Dateizeige auf Anfang, Datei wird gekürzt bzw. versucht zu erzeugen.
- w+
- Lasen und Schreiben, Dateizeige auf Anfang, Datei wird gekürzt bzw. versucht zu erzeugen.
- a
- Schreiben bzw. Anhängen.
- a+
- Lesen und Schreiben bzw. Anhängen.
- x
- Nur Schreiben, Dateizeiger auf Anfang. Fehler falls Datei schon existiert.
- x+
- Lesen und Schreiben, Dateizeiger auf Anfang. Fehler falls Datei schon existiert.
- c
- Schreiben. Existiert die Datei nicht, wird sie erzeugt. Existiert sie, wird der Dateizeige auf Anfang gesetzt.
- c+
- Lesen + Schreiben. Existiert die Datei nicht, wird sie erzeugt. Existiert sie, wird der Dateizeige auf Anfang gesetzt.
<?php $datei="beitraege.txt"; $dh = fopen($datei, "r"); if(!$dh) { print "Kann Datei "$datei" nicht öffnen!"; } else { for ($i = 0; !feof($dh); $i++) { $zeile = fgets($dh); if ($zeile != "") { echo "$zeile<br />n"; } } fclose($dh); } ?>
for-Schleife
<?php $tag = array( "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"); ?> <html> <head><title>Ausgabe</title></head> <body> <?php echo "<h1>Wochentage ausgeben mit for</h1>n"; for($i=0; $i < count($tag); $i++) { echo "$tag[$i]</p>n"; } ?> </body> </html>
foreach-Schleife
Schleifenkonstrukt, was sich insbesonder gut für den Umgang mit assoziativen Arrays eignet.
fputs()
fputs dient zum Schreiben von Dateien
<?php $datei="beitraege.txt"; $dh = fopen($datei, "a"); if(!$dh) { print "Kann Datei "$datei" nicht öffnen!"; } else { { echo ("Schreibe Trallala in Datei!<br />"); fputs ($dh, "Trallalan"); } fclose($dh); } ?>
fwrite()
fwrite dient zum Schreiben von Dateien
<?php $datei="beitraege.txt"; $dh = fopen($datei, "a"); if(!$dh) { print "Kann Datei "$datei" nicht öffnen!"; } else { { echo ("Schreibe Trallala in Datei!<br />"); fwrite ($dh, "Trallalan"); } fclose($dh); } ?>
if
<?php echo "<h1>if, else, elseif</h1>"; $i = 10; if ($i < 10) { echo "i ist kleiner als 10"; } elseif ($i > 10) { echo "i ist grösser als 10"; } else { echo "i genau 10."; } ?>
Kommentare
// Einzeiliger Kommentar /* Mehrzeiliger Kommentar */
Logische Operatoren
- &&
- and
- Logisches Und
- ||
- or
- Logisches Oder
- !
- Logisches Nicht
phpinfo
Einstellung der PHP-Umgebung. Auslesen mit:
<?php phpinfo(); ?>
print()
Ähnlich wie echo Ausgabe von Text. print() kann nur einen Parameter ausgeben, echo() dagegen mehrere.
Prüffunktionen
- is_array
- Prüft, ob die Variable ein Array ist
- is_bool
- Prüft, ob eine Variable vom Typ boolean ist
- is_callable
- Prüft ob der Inhalt einer Variable als Funktion aufgerufen werden kann
- is_float (=is_double,is_real)
- Prüft, ob eine Variable vom Typ float ist
- is_int (=is_integer,os_long)
- Prüft, ob eine Variable vom Typ int ist
- is_null
- Prüft ob eine Variable NULL enthält, also keinen Wert enthält.
- is_numeric
- is_object
- is_resource
- is_scalar
- is_string
- is_unicode
- isset
- empty
session_start()
Mit
session_start();
wird eine Session erzeugt oder wieder aufgenommen.
Ein Cookie setzt man mit
setcookie ( cookiename, cookieinhalt, zeit)
time()
Gibt den aktuellen Unix-Timestamp/Zeitstempel zurück.
<html> <head> <title></title> </head> <body> <p>Heute ist <?php print date("d.m.y", time()); ?> </p> </body> </html>
Time bei php.net.
switch
Mit dem Schlüsselwort switch leitet man das switch-Konstrukt ein und gibt die zu überprüfende Variable an.
<?php echo "<h1>switch, case, break, default</h1>"; $auto = "Tesla"; switch ($auto) { case "Audi": echo "Auto ist Audi"; break; case "BMW": echo "Auto ist BMW"; break; case "Tesla": echo "Auto ist Tesla"; break; case "VW": echo "Auto ist Tesla"; break; default: echo "Ich kenne die Automarke nicht"; } ?>
Vergleichoperatoren
- ==
- Gleichheit
- !=
- Ungleichheit
- <
- Kleiner
- >
- Grösser
- <=
- Kleiner Gleich
- >=
- Grösser Gleich
while-Schleife
<?php $tag = array( "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"); ?> <html> <head><title>Ausgabe</title></head> <body> <?php echo "<h1>Wochentage ausgeben mit while</h1>n"; $i = 0; while($i < count($tag)) { echo "$tag[$i]</p>n"; $i++; } ?> </body> </html>
Weitere Quellen / Referenzen
Hallo, hier schreibt Lars. Dipl-Ing. Ingenieurinformatik (FH). Seit Jahrzehnten in der IT tätig. Geprüfter (und begeisterter) Webmaster. Ebenso begeisterter Windows-, Apple-, und Office-User. Ich schreibe über alle möglichen Themen rund um IT. Mehr über mich erfährst du hier: Über mich. Danke für deinen Besuch!