Einführung |
|
Installation und Version
PHP wird als Modul von Apache oder als eigenständige CGI-Applikation (Interpreter) auf dem Server betrieben.
Die aktuelle Version ist: 5.2.9
Nach der Installation muß der Apache-Server neu gestartet werden, da er nur beim Starten die Konfigurations-Datei einliest.
Insatallationshilfen findet man u.a. auf folgenden Seiten:
http://www.apachefriends.org/de/xampp.html
http://www.entropy.ch/software/macosx/php/
PHP-Dateien schreiben und speichern
PHP-Dateien, müssen, wie HTML-Dateien auch, als reine Text-Dateien gespeichert werden. D.h. es dürfen keine Formatierungen etc. im Text enthalten sein.
Die Dateiendung ist immer .php
Wenn Du unter Windows arbeitest bietet sich als Programmeditor an:
- Editor (unter Programme->Zunbehör)
beim Speichern: Endung .php; Dateityp: Textdatei (*.txt); Codierung ANSI oder UTF-8
- Proton (Freeware unter http://www.qhaut.de/ -> Downloads zu haben)
- Wenn es unbedingt Word sein muss, dann unbedingt speichern als: Dateityp "Nur Text"
Wenn Du unter Mac OS arbeitest:
Hilfreiche Adressen beim Arbeiten mit PHP
Konfiguration
Der Apache Server wird durch eine Text-Datei httpd.conf konfiguriert.
Sie wird eingelesen, wenn der Apache-Server startet. D.h. nach jeder Veränderung in httpd.conf muss der Server neu gestartet werden.
Die Konfigurationsdateien sind sehr gut kommentiert. Jede Zeile die mit einem # beginnt wird vom Server ignoriert und dient nur der Information für den Administrator.
Folgende Felder sind wichtig (Auswahl):
Variable |
Beispiel für die Belegung |
Kommentar |
AddType |
application/x-httpd-php .php .php3 .php4 |
Hier wird der Interpeter bestimmten Dateiendungen zugewieden. |
LoadModul |
php4_module e:/server/php/sapi/php4apache.dll |
Legt die Reihenfolge fest, in der die Module geladen werden. |
AddModul |
mod_php4.c |
Fügt ein Modul dem Server hinzu. |
ServerName |
www.xyz.de |
Hier wird die IP-Adresse oder die URL des Servers eingetragen. Für lokal laufende Server gilt die IP-Adresse 127.0.0.1 |
DocumentRoot |
e:/daten/htdocs |
Der Pfad zu dem verzeichnis mit den HTML bzw. PHP Seiten. |
Der PHP Interpreter wird durch die Text-Datei php.ini konfiguriert.
Sie wird eingelesen, wenn der Interpreter startet. D.h. nach jeder Veränderung in php.ini muß der Interpreter neu gestartet werden.
Die Konfigurationsdateien sind sehr gut kommentiert. Jede Zeile die mit einem ; beginnt wird vom Server ignoriert und dient nur der Information für den Administrator.
Folgende Felder sind wichtig (Auswahl):
Variable |
Beispiel für die Belegung |
Kommentar |
short_open_tag |
On |
Erlaubt zusätzlich zu <?php auch die Kurzform <? |
safe_mode |
On |
Macht PHP sicherer |
error_reporting |
[verschiedene Möglichkeiten] |
Hier kann festgelet werden welche Fehler angezeigt werden sollen. (siehe Kommentare) |
register_globals |
Off |
Sollte aus Sicherheitsgründen abgestellt sein |
extension |
php_gd.dll |
Erweitert PHP um die Grafikbibliothek GD |
Das erste PHP-Script
Womit schreiben? Wie HTML im Texteditor!
Sehr gute kostenlose Texteditoren für PHP und HTML sind Proton oder Phase5. Beide sind zu finden unter: http://www.qhaut.de/
Mein erstes PHP-Skript:
<?
phpinfo(); ?>
Was geschieht:
Die Dateiendung muß
sein. Daran erkennt der Webserver (z.B. Apache) das er das Dokument an den PHP-Interpreter weiterleiten muß. Auf welche Endungen der Webserver reagiert, hängt von seiner Konfiguration ab.
Der PHP-Interpreter sucht im ganz normalen HTML-Text nach <? oder <?php. Das ist für ihn das Zeichen, das er hier PHP-Code beginnt, den er interpretieren muß. Der Code endet bei ?> und kann mehrfach auftauchen. Also Öffnen- und Schließtag.
phpinfo() ruft eine in PHP eingebaute Funktion auf (das es eine Funktion ist erkennt man an den runden Klammern) und führt sie aus.
Was ist eine Funktion?
Ein geordnete Abfolge von Befehlen die nacheinander abgearbeitet werden. So können bestimmte Routinehandlungen in einer Funktion zusammengefasst werden, die dann nur aufgerufen werden muß, ohne die Befehle immer wieder erneut schreiben zu müssen.
Was tut phpinfo?
phpinfo() erstellt eine komplette HTML-Seite und gibt darin die Einstellungen der php.ini Datei aus.
Einbettung
Möglichkeiten des Einbindens:
Einbindung |
Bemerkungen |
<? … ?> |
SGML Stil; Dafür muß in der php.ini der Wert
short_open_tag = on sein. |
<?PHP … ?> |
XML Kompatibel (funktioniert immer) |
<?php … ?> |
XML Kompatibel (funktioniert immer) |
<% … %> |
ASP-Stil; Dafür muß in der php.ini der Wert asp_tags
= on sein. |
<script language=“php“> …
</script> |
HTML-Style (funktioniert immer) |
Die Einbindung von PHP-Code in HTML kann mehrfach in einem Dokument erfolgen. Dabei wird dann zwischen PHP und HTML hin- und hergeschaltet.
Beispiel:
<?
if ($a == 10) { ?>
<a href=“zehn.php“>Zehn</a>
<? }
esle { ?>
<a href=“zehn.php“>Zehn</a>
<? } ?>
Längeres Umschalten auf HTML durch heredoc-Zeichen:
echo muss dabei ganz am Anfang einer zeile stehen! (Es darf kein Leerzeichen davor sein!) PHP-Variablen werden darin ausgewertet.
echo <<< name
HTML-Text
name;
Syntax Kommentare:
/* … */ |
für mehrere Zeilen |
// oder # |
für eine Zeile |
Anweisungen:
Jede Zeile immer mit
; beenden!
<? echo(„hallo“); ?>
Datentypen
Variable
Achtung bei reservierten Wörtern. Worte, die in PHP eine Bedeutung haben, wie if oder include sollten auf keinen Fall als Variablennamen verwendet werden. Vermeiden Sie unbedingt Umlaute und Sonder- oder Leerzeichen in Variablennamen. Aussnahme ist der Unterstrich (z.B. $name_dozent).
Wählen Sie Variablennamen möglichst "sprechend" um Übersicht über den Code zu behalten. Verwirren Sie sich nicht selbst durch kryptische oder missverständliche Variablennamen. So könnte eine Variable z.B. $kunde_nachname heissen.
Variablen beginnen immer mit einem $ (nicht vergessen!)
$x = $y + 5;
Zeichenketten
Zusammenhängen:
$var = $var.“aaa“;
oder
$var
.= „aaa“;
Mischungen:
Datentypen müssen in PHP nicht wie in anderen Sprachen explizit festgelegt werden.
Der Operator entscheidet über den Datentyp
$a
= 10;
$b = 25;
$c = ”5“;
Operation |
Ergebnis |
$a + $b |
35 (Zahl) |
$a + $c |
15 (Zahl) |
$a.$c |
105 (String) |
$a.$b |
1025 (String) |
Konstanten:
Die Definition von Konstanten erfolgt mit folgendem Mechanismus: define(„Name der Konstanten“,“Wert“);
define(„MWST“,“0,16“);
$brutto = $netto + $netto * MWST;
Dynamische Variable
<?
$variable = "Vorname"; # Variable in der der Variablenname gespeichert wird
$$variable = "Lukas"; # Belegen der dynamischen Variable
echo "<br>";
echo $Vorname; #=>> Lukas
echo "<br>";
echo $variable; #=>> Vorname
echo "<br>";
echo $$variable; #=>> Lukas
?>
Operatoren
Wertzuweisung:
$var = 100;
$var = „Halli, hallo, hallöle“;
Berechnungen:
$a = $a+$b;
$a += $b;
+= -= *= /=
$a = 5; |
|
$b = ++$a; |
|
echo $b; |
=> 6 |
$a = 5; |
|
$b = $a++; |
|
echo $b; |
=> 5 |
auch -- |
|
Ausgabe:
$var = "neun Euro"; |
|
echo $var; |
=> neun Euro |
|
|
(Normales Zusammensetzen von Text) |
|
echo „Das ist der Preis:“.$var; |
=> Das ist der Preis: neun Euro |
|
|
(Bei der Angabe in Hochkommatas (, ... ) wird der Name also $var ausgegeben.) |
echo „Das ist der Preis: $var“; |
=> Das ist der Preis: neun Euro |
echo ,Das ist der Preis: $var‘; |
=> Das ist der Preis: $var |
|
|
(Hochkommata als Teil des Strings) |
|
echo „Das ist der Preis: ,$var‘“; |
=> Das ist der Preis: 'neun Euro' |
Gültigkeitsbereich von Variablen
$a = 5;
function name() {
echo $a; => $a ist nicht bekannt
}
$a = 5;
function name() {
global $a;
echo $a; => jetzt ist $a bekannt
}
Superglobale Variable gibt es auch wie: $_SESSION etc.
Testen von Variablen
isset($var)
Diese Funktion liefert TRUE, wenn die Variable oder das Array-Element var existiert, sonst FALSE.
empty($var)
Diese Funktion liefert TRUE, wenn eine Variable nicht definiert, leer oder gleich 0 ist, ansonsten FALSE.
Seiten zusammensetzen
Wie mit Bausteinen können HTML-Seiten mit PHP zusammengesetzt werden.
Sehr nützlich für
- Kopf- und Fußzeilen
- immer wiederkehrende Elemente in einer Seite (Navigation)
- zentrales Ansprechen der Datenbank (config.php)
INCLUDE
Hier wird der Code erst zusammengesetzt und dann alles interpretiert. Daher funktioniert include auch in Schleifen.
include(URL);
REQUIRE
Alternative zu include. Der require Block wird erst interpretiert und dann eingesetzt. Require ist also in Schleifen nicht zu verwenden.
require(URL);
Stringvariable
Strings sind intern Zeichenarrays.
- $laenge = strlen($str); Länge
Strings umwandeln
- $str = strrev($str); invertiert Zeichenkette
- strtolower($str) / strtoupper($str) Wandelt in Groß- bzw. Kleinbuchstaben
- $str = ucfirst($str); erstes Zeichen wird groß
- $str = ucwords($str); erstes Zeichen jeden Wortes wird groß
Strings teilen
- $arr = explode($seperator, $str); Teilt Zeichenkette anhand von Trenner
$str = Diese Zeichenkette soll zerteilt werden.;
$arr = explode( , $str);
foreach($arr as $elem) {
echo $elem<br>;
}
Ausgabe:
Diese
Zeichenkette
soll
zerteilt
werden
- $str = implode($seperator, $arr); Verbidet das Array wieder mit Seperator
$str = Diese Zeichenkette soll zerteilt werden.;
$arr = explode( , $str);
$str = implode(:, $arr);
echo $str;
Ausgabe: Diese:Zeichenkette:soll:zerteilt:werden
Zeichen ersetzen
- $str = ltrim($str); entfernt führende Leerzeichen
- $str = trim($str); entfernt Leerzeichen vorn und hinten
- $str = strtr($str, $from, $to); Ersetzt einzelne Zeichen
- $str = str_replace($suchen, $ersetzen, $str); Ersetzt Strings in Strings
Suchen
- $erg = strcmp($str1,$str2); Vergleicht zwei Strings. Wenn $str1<$str2 dann 1, sonst -1. Bei Gleichheit 0.
- $erg = strcasecmp($str1,$str2); aber case-sensitive
- $str = strpos($str, $such, $offset); Erstes Auftreten eines Strings ab offset
- $erg = strrpos($str, $char); Letztes Auftreten eines Zeichens
Teilen
- $str = substr($str, $start, $length); Substring
Zeichen/Strings ausgeben
- $erg = chr(n); ASCII-Zeichen n
- echo $a; Ausgabe
- print($var); Ausgabe
- printf(%s, $var); Formatierte Ausgabe
- print_r($arr); Gibt bei einem Array alle Felder aus
HTML/URL Umwandlung
- $str = nl2br($str); Wandelt Zeilenumbrüche in <br>
- $satz = "Schöne Grüße aus Lüneburg.";
echo htmlentities($satz);
Ausgabe: Schöne Grüße aus Lüneburg.
(Funktioniert aber nur wenn als Zeichensatz im Editor Latin-1 eingestellt ist.)
- rawurlencode($str): Konvertiert als URL
- rawurldecode($str): Konvertiert URL zurück