PHP - kompakt

Variablen, Datentypen...

Programmsteuerung

Funktionen

Arrays

OOP

Session Management

Debugging

Files

MySQL

Konfiguration

 

Grundlegendes

PHP ist ein Open-Source-Projekt der Apache Software Foundation, 53% der produktiven Apache-Webserver haben PHP-Fähigkeiten (Dez. 2003).

Eine gepflegte Liste von PHP-Editoren findet sich unter http://phpeditors.linuxbackup.co.uk/.

PHP arbeitet den Code von oben nach unten ab.

Whitespace haben (abgesehen von der Trennung einzelner "Anweisungen") keine Auswirkungen, sie werden v.a. eingesetzt um den Code lesbarer zu machen. Man kann beliebige Kombinationen von Whitespaces verwenden, Leerzeichen, Tabulatoren, Carriage Returns...

Statt <?php ... ?> ist auch <? ... ?> (SGML-Stil) möglich.

Zeichenkodierung

PHP geht per Voreinstellung von iso-8859-1 (Latin-1) aus. High-Bit-Zeichen (diejenigen die in ASCII nicht vorhanden sind) können normal verwendet werden. Es ist (falls aus technischen Gründen notwendig) auch möglich, diese mit \x gefolgt von einer Hexadezimalzahl zu maskieren.

$name = "Paul Esterházy"; // kann auch geschrieben werden als...
$name = "Paul Esterh\xe1zy";

Die Zeichenkodierung sollte dem Browser mit folgender Zeile mitgeteilt werden:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Eine umfassende Beschreibung der iso-Zeichensätze findet sich unter http://en.wikipedia.org/wiki/ISO_8859.

PHP kann auch für die Verwendung von Unicode konfiguriert werden.

Kommentare

Einzeilig: // Kommentar
andere Möglichkeit: # Kommentar
Mehrzeilig: /* Kommentar */

Blöcke

Auch Blöcke dürfen von HTML unterbrochen werden. Innerhalb eines Blockes deklarierte Variablen sind lokal.

Einbinden von PHP-Dateien

include("Dateiname"); bindet die Datei nur ein, wenn dieser (einbindende) Code auch abgearbeitet wird. Ist Einbindung der Datei nicht möglich, wird eine Warnung ausgegeben.

require("Dateiname"); bindet die Datei auch ein, wenn dieser (einbindende) Code nicht abgearbeitet wird. Ist das Einbinden nicht möglich, kommt es zu einem fatalen Fehler.

Include-Dateien können ihrerseits wieder weitere Dateien einbinden. Um zu verhindern, dass eine Datei zweimal eingebunden wird, kann man die Funktionen include_once() und require_once() verwenden.

PHP-Code in eingebundenen Dateien muss immer von den PHP Start- und End-Tags umgeben sein, ansonsten wird er als HTML-Code verarbeitet.

Pfade für Include-Dateien können sowohl unter Unix als auch unter Windows mit vorwärtsgerichteten Schrägstrichen angegeben werden.

Für den Zugriff auf Include Dateien empfiehlt es sich, den Parameter include_path in php.ini zu verwenden. Danach müssen die Pfade relativ zu diesem Verzeichnis angegeben werden.

echo()

echo("Hallo PHP"); oder echo "Hallo PHP";

echo() akzeptiert beliebig viele Argumente, print() hat die gleiche Funktion wie echo, akzeptiert aber nur ein Argument.

Datentypen, Variablen, Konstanten und Operatoren

Datentypen

PHP verfügt über acht Datentypen. Die ersten vier sind skalare Datentypen, d.h. sie enthalten nur einen einzelnen Wert.

Integer

Ganze Zahlen von -2'147'483'648 bis 2'147'483'647 (32 Bit).

Floating-Point

Können auch in der Form 3.56E9 (=3'560'000'000) oder 3.56e9 geschrieben werden.

String

Strings können in einfache (') oder zweifache (") Anführungszeichen eingeschlossen werden. Bei Strings in doppelten Anführungszeichen können einfache ohne Maskierung verwendet werden, Bsp. "Ihr Login lautet 'Gandalf'."

Maskierung von Sonderzeichen
Code Beschreibung
\" doppeltes Anführungszeichen
\\ Backslash
\n New Line
\r Carriage Return
\t Tabulator
\$ Dollarzeichen

Newline Zeichen können direkt in ein Stringliteral geschrieben werden, dies ist ein SQL-Anweisungen besonders praktisch.

$var = "Das ist ein String
mit Newline Zeichen";

Boolean

Kann als Wert eine der beiden Konstanten TRUE und FALSE annehmen.

Null

Ein Typ der für das Fehlen eines Werts steht.

Ressourcen

Halten Handler zu externen Datenstrukturen wie geöffneten Dateien oder Datenbankverbindungen.

Typkonvertierung

Folgende Funktionen können für eine explizite Konvertierung verwendet werden.

string strval(mixed variable)
integer intval(mixed variable)
float floatval(mixed variable)

Explizites Typecasting ist auch im C-Stil möglich:

$int = (integer) $var;

 

Variablen

PHP unterscheidet zwischen Gross- und Kleinschreibung (allerdings nicht bei Klassennamen). Die Benutzung und Deklaration einer Variablen wird immer mit $ eingeleitet.

Variablennamen können aus Buchstaben, Ziffern und dem Unterstrich "_" bestehen. Sie dürfen nicht mit einer Ziffer beginnen.

Sämtliche Variablen können Werte sämtlicher Typen annehmen, Deklarationen sind nicht notwendig, eine Variable erzeugt man indem man ihr einen Wert zuweist.

Innerhalb einer Funktion eingeführte (also lokale) Variablen sind ausserhalb unbekannt.

Ausserhalb einer Funktion deklarierte Variablen sind innerhalb unbekannt, es sei denn man "importiert" sie mit global.

Variablenersetzung

Variablen können direkt in ein Stringliteral eingebaut werden.

$name = "Hans";
echo("Ihr Name ist $name, viel Glück");

Die Variablenersetzung funktioniert nicht in Stringliteralen die in einfache Anführungszeichen eingeschlossen sind.

Ist der Variablenname nicht eindeutig oder folgt nach dem Variablennamen kein Whitespace, muss er in geschweifte Klammern {...} eingeschlossen werden.

$memory = 256;
$memoryRAM = 512;

// {...} notwendig da kein Whitespace nach $memory
echo("Your Computer has {$memory}MBytes memory");

// {...} notwendig da Variablenname nicht eindeutig
echo("Your Computer has {$memory}RAM");

Variablenersetzung kann auch in Variablennamen angewendet werden.

$anzahl = 12;
$name = "anzahl";
echo ($$name); // gibt 12 aus

Globale Variablen

Mit der Anweisung global $a; kann man eine globale Variable (ausserhalb der Funktion definiert) innerhalb der Funktion verfügbar machen. Wird eine nicht existierenede Variable mit global innerhalb einer Funktion verfügbar gemacht, gilt sie auch in der Funktion als nicht gesetzt!

Variablenfunktionen

isset($test) prüft ob $test exisitert.

empty($test) prüft ob eine Variable gleich false ist.

Wert von $var isset($var) empty($var)
unset($var)... false true
null false true
0 true true
true true false
false true true
"0" true true
"" true true
"foo" true false
array() true true

unset($test) löscht $test.

gettype() gibt den Datentyp einer Variable - oder unknown type falls dieser unbekannt ist - zurück.

settype($a, "double"); konvertiert $a zu double. Konvertierungen können auch mit dem Cast-Operator wie in C oder Java durchgeführt werden, Bsp: $b = (double) $a;.

weitere Variablenfunktionen sind:

is_long() is_int() is_integer() is_double() is_real() is_float() is_string() is_array() is_object() is_numeric()

sie sind alle vom Typ boolean.

Konstanten

Definition

Syntax: define("KONSTANTENNAME", Wert);
Beispiel: define("PI", 3.14159);

Aufruf

Der Aufruf einer Konstante erfolgt ohne $.

Konstantennamen werden per Konvention in Grossbuchstaben geschrieben.

defined()

boolean defined(string konst_name)

Überprüft ob eine Konstante definiert wurde.

Operatoren

$b = &$a; weist $b die Speicheradresse von $a zu. Eine andere Möglichkeit ist $b =& $a.

% gibt den Rest einer ganzzahligen Division zurück (Modulo-Operator).

$a . $b verkettet die Strings $a und $b.

$a .= $b hängt String $b an das Ende von String $a.

=== prüft ob Wert und Datentyp zweier Variablen gleich sind.

!== prüft ob Wert und Datentyp zweier Variablen verschieden sind.

Inkrement- und Dekrement-Operatoren (prefix und postfix) entsprechen denjenigen von Java.

Die logischen Operatoren sind: and, or, xor, &&, || und !.

Eine Zuweisung gibt auch einen Wert zurück:

$y = ($x = 11); // jetzt enthalten $y und $x den Wert 11

Die Klammern wären nicht notwendig.

Zeit und Datum

Zeit und Datum werden in PHP als UNIX-Timestamps gespeichert. Ein UNIX-Timestamp zählt die Sekunden, welche seit dem 1. Januar 1970, 00:00:00 Greenwich Mean Time vergangen sind.

time()

integer time()

Erzeugt einen Timestamp mit aktuellem Datum und Uhrzeit.

gmmktime()

integer gmmktime(hour, minute, second, month, day, year)

Erzeugt einen entsprechenden Timestamp, alle Argumente sind vom Typ integer.

getdate()

array getdate(integer timestamp)

Gibt ein assoziatives Array mit Informationen über den Timestamp zurück.

Elementname Beschreibung
mday Monatstag
mon Monat als Zahl
year Jahr
wday Wochentag als Zahl zwischen 0 und 6
hours Stunde im 24-hour Format
minutes Minuten
seconds Sekunden

strtotime()

int strtotime(string date)

Versucht einen String als Datum zu parsen und gibt das Datum als Timestamp zurück. Akzeptiert Strings im MySQL-Format (yyyy-mm-dd).

checkdate()

boolean checkdate(integer month, integer day, integer year)

Gibt TRUE zurück, falls es sich um ein gültiges Datum handelt.

cal_days_in_month()

int cal_days_in_month(const kalendar, integer monat, integer jahr)

Gibt die Anzahl Tage des Monats zurück. Der Kalender wird mit einer Konstante angegeben, welche für den Gregorianischen CAL_GREGORIAN heisst.

Programmsteuerung

Verzweigungen

Verzweigungen mit if

if (Bedingung)

    {...}

elseif (Bedingung)

    {...}

else

    {...}

Bei einzelnen Anweisungen können die geschweiften Klammern weggelassen werden.

Verzweigungen mit switch()

Beispiel:

$a = "Hallo";

switch ($a)

{

    case "Hallo" : echo("Deutsch");

    break;

    case "Hello" : echo("Englisch");

    break;

    case "Hola" : echo("Spanisch");

    break;

    default : echo("Diese Sprache kenne ich nicht");

}

Schleifen

Das while Statement

while (Ausdruck) {

    Anweisungen

}

Das do ... while Statement

do {

    Anweisungen

} while(Ausdruck);

Das for Statement

for (Initialisierung; Bedingung; Inkrement) {

    Anweisungen

}

Das foreach Statement

Mit foreach kann man einen Array durchlaufen.

foreach ($array as $value) {

    Anweisungen

Bei jedem Durchlauf hat value den Wert des nächsten Array-Elements.

foreach (array as $key=>$value) {

    Anweisungen

Bei jedem Durchlauf hat key den Wert des zu value gehörenden Index resp. Schlüssel.

break

Bei allen Schleifen kann die Anweisung break; verwendet werden, um die Schleife vorzeitig abzubrechen.

continue

continue; wird verwendet um die Schleife erneut zu durchlaufen und die restlichen Anweisungen im Schleifenrumpf zu ignorieren.

break und continue machen den Code allerdings unübersichtlich und sollten daher sparsam verwendet werden.

Ausführung unterbrechen

sleep()

sleep(integer seconds)

Die Ausführung des Skripts macht eine Pause von seconds Sekunden.

usleep()

usleep(integer microseconds)

Die Ausführung des Skripts wird für microseconds Mikrosekunden unterbrochen.

Funktionen

Definition

function double($value)

{

  $double_value = 2 * $value;

  return($double_value);

}

Statt return($double_value); ist auch return $double_value; möglich.

return ist die letzte Anweisung, welche ausgeführt wird, mit return; kann die Ausführung einer Funktion abgebrochen werden.

Übergabe von Parametern

Standardmässig werden Parameter als Wert übergeben. Definiert man eine Funktion mit

function double(&$value) {...

wird statt des Wertes von $value ein Zeiger auf die Speicherstelle von $value übergeben. double() kann dann nicht mehr mit einem Literal als Argument aufgerufen werden, double(5) würde einen Fehler verursachen.

Standard-Parameterwerte

function multiply($value, $factor = 2) {

	return($value * $factor);

}

multiply() kann auch mit nur einem Argument aufgerufen werden, $factor erhält in diesem Fall den Wert 2.

Umgang mit Typen

Wird einer Bibliotheks-Funktion ein Argument eines anderen Typs übergeben als erwartet, kommt es zu einer automatischen Typkonvertierung.

Ist der übergebene Typ bei einer selbstdefinierten Funktion wichtig, sollte er getestet werden.

Umgang mit Variablen

Variablen die ausserhalb einer Funktion definiert wurden, sind innerhalb nicht ansprechbar. Von dieser Regel gibt es drei Ausnahmen:

global sollte nicht allzu grosszügig verwendet werden, da es zu unübersichtlichem Code führt. Mit global lässt sich das Problem lösen, dass eine Funktion nur einen Wert zurückliefern kann, es ist jedoch besser, das Problem mit der Übergabe von Parametern als Referenz zu lösen. Eine andere Lösungsmöglichkeit, ist die Rückgabe eines Arrays.

Arrays

Arrays sind in PHP flexibler und ausgefeilter als in den meisten anderen Programmiersprachen. Sie können Skalarwerte, Objekte und andere Arrays enthalten. Es ist möglich, im gleichen Array Werte verschiedener Typen zu speichern.

Arrays erzeugen

Eine komfortable Methode ist die Funktion array().

$Tiere = array("Fuchs", "Hirsch", "Dachs", "Hase");

Dies erzeugt das gleiche Ergebnis wie

$Tiere[0] = "Fuchs";

$Tiere[1] = "Hirsch";

$Tiere[2] = "Dachs";

$Tiere[3] = "Hase";

oder

$Tiere[] = "Fuchs";

$Tiere[] = "Hirsch";

$Tiere[] = "Dachs";

$Tiere[] = "Hase";

Ein leeres Array kann mit dem Rückgabewert von array() ohne Argumente angelegt werden. Damit lässt sich auch ein bestehendes Array leeren ohne es zu zerstören.

Soll die Indizierung nicht mit 0 beginnen, lässt sich dies wie folgt bewerkstelligen:

$tiere = array(1 => "Fuchs", "Hirsch", ...);

Assoziative Arrays

Als Index kann man auch Strings verwenden, man redet in diesem Fall von assoziativen Arrays; sie werden in anderen Sprachen auch als Hash-Arrays oder Hash-Tabellen bezeichnet.

$Benutzer["Vorname"] = "Peter";

$Benutzer["Nachname"] = "Schmidt";

$Benutzer["eMail"] = "peter.schmidt@hotmail.com";

Assoziative Arrays können auch mit der Funktion array() erzeugt werden:

$array = array("first" => 1, "second" => 2, ...);

Arrays initialisieren

$monate = {"Januar", "Februar", "März",...};

resultiert in einem Array mit $monate[0] == "Januar". Mit

$monate = {1=>"Januar", "Februar", "März"...};

erhält man einen Array mit $monate[1] == "Januar".

Arrays in Strings referenzieren

Im Gegensatz zu Variablen eines skalaren Typs müssen Arrays für die Variablenersetzung in geschweifte Klammern gesetzt werden.

$output = "Der betreffende Monat ist {$monate[2004][3]}, wir wünschen Ihnen eine gute Reise";

Inhalt eines Arrays ausgeben

Die Funktion print_r() gibt die Array-Elemente und ihre Schlüssel aus. Damit die Formatierung korrekt ist, sollte diese Ausgabe in <pre> und </pre> eingeschlossen werden.

Objektorientiertes Programmieren in PHP 4

Klassendefinition

Membervariablen werden innerhalb der Klassendefinition mit dem Schlüsselwort var deklariert.

Membervariablen referenziert man innerhalb der Klassendefinition mit $this->....

Für den Konstruktor definiert man eine Funktion die den selben Namen wie die Klasse hat.

Die Definition von Konstanten ist nicht erlaubt.

class User {

	var $name;

	var $passwort;
/* Konstruktor */ function User($name, $passwort) { $this->name = $name; $this->passwort = $passwort; } function print_name() { /* Membervariablen müssen für die Variablenersetzung in {...} eingeschlossen werden */ echo("Der User heisst {$this->name}"); } }

Methoden

Auf ausserhalb der Klasse definierte Konstanten kann in Methoden normal zugegriffen werden.

Globale (ausserhalb der Klasse definierte) Variablen müssen auch innerhalb von Methoden mit global verfügbar gemacht werden. Ohne $this-> kann in Methoden also nur auf lokale Variablen zugegriffen werden.

Ausserhalb der Klasse definierte Funktionen können in Methoden normal aufgerufen werden.

Klasse benutzen

$user = new User("Pinoccio", "geheim");

$user->print_name();

Destruktoren, private Membervariablen und -funktionen, statische Membervariablen und -funktionen sowie Überladen gibt es erst ab PHP5.

Methoden können auch ohne Instanz der Klasse mit Klassenname::Methodenname() aufgerufen werden. Verwendet die Methode Membervariablen, enthalten diese den Wert NULL.

Objekte als Referenz an den Konstruktor übergeben

class Ganzes {

	var $mein_teil; // Membervariable



/* KONSTRUKTOR */

	function Ganzes(&$teil) { // Übergabe des Parameters als Referenz

		$this->mein_teil =& $teil; // Zuweisung ebenfalls als Referenz

	}

}

Soll das Objekt $teil in der Membervariablen $mein_teil der Klasse Ganzes als Referenz gespeichert werden, ist darauf zu achten den Operator & sowohl in der Parameterliste als auch bei der Zuweisung an die Membervariable zu verwenden. Ansonsten wird an einem der beiden Orte das Objekt $teil geklont.

Vererbung

Eine Klasse ableiten:

class Sohn extends Vater {

  function Sohn() {

		Vater::Vater() // Aufruf des Oberkonstruktors

	}



}

Das Überschreiben von Methoden ist möglich, Überladen jedoch nicht. Auf (überschriebene) Methoden der Vaterklasse kann mit Vaterklasse::methode() zugegriffen werden.

Funktionen für OOP

class_exists()

boolean class_exists(string name)

Prüft ob eine enstprechende Klassendefinition vorhanden ist.

get_declared_classes()

array get_declared_classes()

Gibt einen Array mit allen selbstefinierten Klassen sowie den internen Klassen stdClass, OverloadedTestClass und Directory zurück.

get_class()

string get_class(object obj)

Gibt die Klasse von $obj als string zurück, allerdings in Kleinbuchstaben.

get_object_vars()

array get_object_vars(object obj)

Gibt einen assoziativen Array mit allen Membervariablen des Objekts obj zurück (key=Variablenname und value=Wert).

method_exists()

boolean method_exists(object obj, string methode)

Prüft ob obj über die Methode methode verfügt. Der Methodenname muss ohne "()" angegeben werden.

is_a()

boolean is_a(object obj, string klasse)

Prüft, ob obj eine Instanz der Klasse klasse oder einer ihrer Unterklassen ist.

Vorsicht bei var_dump()

var_dump() kann auch auf Objekte angewendet werden. Besitzt Objekt1 jedoch eine Referenz auf Objekt2 welches wiederum eine Referenz auf Objekt1 hat, gerät var_dump() in eine Endlosschleife.

Lösung: var_dump() kann auch innerhalb einer Methode mit $this als Argument aufgerufen werden. Man schreibt sich eine Methode, welche temporär die Rückbezüglichen Referenzen auf einen anderen Wert setzt, macht den dump und setzt die Referenzen danach wieder.

php.ini

php.ini ist der Konfigurationsfile von PHP. Es handelt sich um einen Textfile, in welchem auf jeder Zeile eine Direktive initialisiert wird.

ini_get()

string ini_get(string varname)

Gibt den in php.ini gesetzten Wert der als String übergebenen Direktive zurück.

Gewisse Direktiven können innerhalb eines Skripts mit der Funktion ini_set() geändert werden. Diese Änderung gilt aber nur für das aktuelle Skript und die Zeit dessen Ausführung.

ini_set()

string ini_set(string varname, string new_value)

Ändert eine Direktive in php.ini. Bei Erfolg gibt ini_set() den alten Wert zurück, bei Misserfolg FALSE.

Session-Management

Sessions besitzen zwei Komponenten: Einen Array mit Session-Variablen und einen Session-Identifier (ID).

Üblicherweise werden die Session-Variablen auf dem Server in einer Datei gespeichert, indem die Werte serialisiert werden. Aber auch die Speicherung in einer Datenbank ist möglich.

Bei der Verwendung von Sessions werden die Session-Variablen nicht über das Web zwischen Server und Client übermittelt, sondern nur die Session-ID. Die Übermittlung der Session-ID erfolgt (falls Cookies auf Client aktiviert) als Cookie.

Im Idealfall logt sich ein Benutzer aus und die Session wird explizit beendet. Da sich aber niemals alle Benutzer ausloggen, kann der Server nie sicher sein ob ein Benutzer immer noch da ist und muss Sessions die längere Zeit nicht mehr benutzt wurden löschen.

Um das Reload-Problem zu verhindern, sollte die Session in einer nicht angezeigten Seite erzeugt werden.

session_id()

string session_id([string id])

Setzt die Session-ID oder gibt diese zurück (falls ohne Argument aufgerufen).

Setzt man die Session-ID (bei bestehender Session, z.B. weil Cookies deaktiviert sind), so muss dies vor dem Aufruf von session_start() erfolgen, da ansonsten eine neue Session mit neuer Session-ID erzeugt wird.

Sessions in der Praxis

Jede PHP-Seite die mit Sessions arbeitet muss die Funktion session_start() aufrufen, und zwar bevor irgendwelche Ausgaben gemacht werden.

Ist noch keine Session vorhanden, so erzeugt session_start() eine solche und übermittelt sie an den Browser. Bei einer bereits vorhandenen Session sucht PHP die Session-Datei und initialisiert die Session-Variablen. Ist die Seite fertig abgearbeitet, schreibt PHP die geänderten Session-Daten automatisch in die Datei zurück.

Überprüfen ob eine bestimmte Session-Variable existiert

Der folgende Code überprüft ob eine Session-Variable namens count existiert:

if (!isset($_SESSION["count"])) {... // true falls count nicht existiert

Session-Variablen entfernen

Mit folgender Anweisung wird nur die Variable $count aus der Session entfernt.

unset($_SESSION["count"]);

Alle Variablen aus einer Session zu entfernen ohne die Session zu zerstören erreicht man mit:

$_SESSION = array();

Typen von Session-Variablen

Session-Variablen können jeden Typs sein, auch Objekte. Bei der Speicherung von Objekten muss man aber die Klassendefinitionen in die Skripte einschliessen, am besten mit require() oder require_once().

Sessions beenden

Mit der Funktion session_destroy() beendet man eine Session, im Skript muss jedoch zuvor session_start() aufgerufen werden. Bietet die Anwendung eine Logout-Möglichkeit, ist dies natürlich der optimale Zeitpunkt.

session_destroy() entfernt die Session-Datei vom Server, nicht aber das Cookie vom Client. Dies spielt aber keine Rolle, da PHP mit Cookies denen keine Session-Datei auf dem Server entspricht umgehen kann.

Variablen in der Session registrieren

Mit session_register("<variablenname>") registriert man eine globale Variable in der Session. Wertänderungen nach dem Aufruf von session_register() werden automatisch aktualisiert. Die Variable steht auf den anderen Seite nach dem Aufruf von session_start() richtig initialisiert zur Verfügung. Auch Arrays und Objekte können registriert werden (bei Objekten muss allerdings die Klassendefinition in das Skript eingebunden werden).

session_unregister("<variablenname>") entfernt die Variable aus der Session.

Mit session_is_registered("<variablenname>") lässt sich prüfen ob eine Variable bereits registriert ist.

Sessions mit und ohne Cookies

Prüfen ob Cookies aktiviert sind

Wurde auf der ersten Seite eine Session gestartet, kann ab der zweiten Seite geprüft werden, ob die Variable $_COOKIES["PHPSESSID"] gesetzt ist. Ist dies nicht der Fall, so sind Cookies beim Browser deaktiviert.

Session-Management ohne Cookies

Bei deaktivierten Cookies kann die Session-ID in versteckten Formularfeldern und bei internen Hyperlinks als Parameter dem Server übermittelt werden.

Sind Cookies deaktiviert, erzeugt PHP automatisch die Konstante SID, welche "PHPSESSID=<Session-ID>" enthält. Man kann interne Links wie folgt erzeugen: <a href="file3.php?<?= SID ?>">weiter</p>.
Die nächste Seite prüft ob ein Request-Parameter namens PHPSESSID vorhanden ist (sowohl GET als auch POST) und falls ja wird die Session-ID entsprechend gesetzt.

Debugging

Nützliche Funktionen

Funktion gettype()

string gettype(mixed expression)

Gibt den Typ der Ausdrücke (oder der Variablen) als String zurück.

Funktion var_dump()

var_dump(mixed expression [, mixed expression...])

Gibt Informationen über die übergebene(n) Variable(n) oder Ausdruck/Ausdrücke auf der Seite aus.

Funktion print_r()

print_r(mixed expression)

Gibt eine Kurzdarstellung von Arrays und Objekten auf der Seite aus.

Assert

Ab PHP4 werden Zusicherungen unterstützt. Anhand der Funktion assert() lassen sich Zusicherungen in den Code einbauen.

assert()

boolean assert(string|boolean assertion)

Sind assertions aktiviert (assert.active = "1" in php.ini) kann mit assert eine Zusicherung geprüft werden. Ist assertion ein bool'scher Ausdruck der zu FALSE evaluiert, gibt PHP eine Warnmeldung aus.

 

Files

fopen()

resource fopen(filename, mode, [use_include_path], [context])

File Access Modes
Mode Erlaubte Operationen
"r[b]" nur lesen
"w[b]" nur schreiben, wenn nötig erzeugen, vorhandenen Inhalt löschen
"a[b]" anfügen, erzeugen wenn nötig
"r+[b]" lesen und schreiben
"w+[b]" lesen und schreiben , wenn nötig erzeugen, vorhandenen Inhalt löschen
"a+[b]" lesen und schreiben, erzeugen wenn nötig

Verwendet man b als letzten Teil, geht PHP von einem Binärfile aus und end-of-line-Zeichen haben keine spezielle Bedeutung.

fclose()

boolean fclose(recource file)

feof()

boolean feof(resource file)

Gibt true zurück, wenn man sich am Dateiende befindet.

file_exists()

boolean file_exists(string filename)

Gibt true zurück, falls die Datei existiert.

file_get_contents()

string file_get_contents(string filename, boolean use_include_path)

Gibt den gesamten Inhalt als String zurück, kann auch auf Binärdateien (z.B. Bilder) angewendet werden. Statt eines Dateinamens kann auch eine URL angegeben werden. Um eine Datei direkt an den Browser zu senden, sollte man readfile() benutzen.

file_set_contents()

boolean file_set_contents(string filename, string contents)

Erzeugt oder ersetzt die Datei und schreibt den mit contents übergebenen Inhalt rein.

filectime()

integer filectime(string filename)

Gibt unter UNIX die Zeit (in Millisekunden seit 1970) zurück bei welcher die Datei zum letzten Mal geändert wurde. Unter WINDOWS die Zeit zu welcher die Datei erzeugt wurde.

filesize()

integer filesize(string filename)

Gibt die Dateigrösse in Bytes zurück.

mkdir()

boolean mkdir(string directory, integer mode)

Erzeugt ein Verzeichnis, mode wird unter WINDOWS ignoriert und folgt unter UNIX den Regeln von chmod.

MySQL

Allgemeines

Werte die in der DB NULL sind, erhalten auch bei SELECT-Abfragen im resultset den PHP-Wert NULL.

Funktionen

mysql_connect()

resource mysql_connect(string host, [string user], [string passwort])

Verbindet mit einer MySQL-Datenbank. Tritt ein Fehler auf, wird FALSE zurückgegeben.

mysql_select_db()

boolean mysql_select_db(string database, [resource connection])

Wählt eine Datenbank aus, lässt man connection weg, wird die zuletzt geöffnete Verbindung benutzt. Gibt bei Erfolg TRUE zurück, sonst FALSE.

mysql_query()

resource mysql_query(string sql [, resource connection])

$rs = mysql_query("select...", $connection);

Liefert einen Zeiger auf das Resultset zurück, dieser Zeiger (hier $rs) existiert auch wenn ein leeres Resultset zurückgegeben wird. Kommt es zu einem Fehler, wird FALSE zurückgegeben.

mysql_num_rows()

integer mysql_num_rows(resource rs)

gibt die Anzahl Datensätze im Resultset rs zurück.

mysql_fetch_array()

array mysql_fetch_array(resource rs [, MYSQL_NUM|, MYSQL_ASSOC])

Gibt einen Array mit dem nächsten Datensatz zurück, oder FALSE falls keiner mehr vorhanden ist.

mysql_fetch_accoc()

Gibt das gleiche zurück wie mysql_fetch_array() mit der Konstante MYSQL_ACCOC.

mysql_fetch_object()

object mysql_fetch_object(resource rs)

Gibt den Datensatz als Objekt zurück, welcher die Feldwerte in Membervariablen mit dem entsprechenden Feldnamen speichert.

mysql_insert_id()

integer mysql_insert_id([resource connection])

Liefert den für das auto_increment-Feld vergebene Wert der letzten insert-Anweisung zurück.

mysql_real_escape_string()

string mysql_real_escape_string(string query, [resource connection])

Liefert eine Kopie des Strings query zurück, bei welchem alle Sonderzeichen maskiert wurden.

mysql_client_encoding()

string mysql_client_encoding([resource connection])

Liefert den Namen des Zeichensatzes zurück, welcher für die Verbindung connection verwendet wird.

mysql_errno()

integer mysql_errno([resource connection])

Liefert die MySQL-Fehlernummer des letzten Fehlers auf der Verbindung connection zurück.

mysql_error()

string mysql_error([resource connection])

Liefert einen beschreibenden Text zum letzten Fehler auf der Verbindung connection zurück.

mysql_data_seek()

boolean mysql_data_seek(resource result, integer row)

Setzt den Datensatz-Zeiger des Resultsets result auf row. Die Zählung beginnt bei null, mit $row = 10 wird der Zeiger also auf den 11. Datensatz gesetzt.

mysql_get_client_info()

string mysql_get_client_info([resource connection])

Liefert eine Beschreibung der von PHP verwendeten MySQL-Client-Bibliothek zurück.

mysql_get_host_info()

string mysql_get_host_info([resource connection])

Liefert eine Beschreibung der MySQL-Verbindung.

mysql_get_server_info()

string mysql_get_server_info([recource connection])

Liefert den Versions-String des MySQL-Servers zurück.

mysql_info()

string mysql_info([resource connection])

Liefert eine Beschreibung der letzten INSERT-, LOAD DATA INFILE-, ALTER TABLE- oder UPDATE-Abfrage zurück.

mysql_ping()

boolean mysql_ping([resource connection])

Prüft ob eine Verbindung aktiv ist.

ODBC

odbc_autocommit()

boolean odbc_autocommit(resource connection, boolean on)

Legt fest, ob Transaktionen automatisch akzeptiert werden. Standardwert ist true.

odbc_close()

odbc_close(resource connection)

odbc_close_all()

Schliesst alle offenen ODBC-Verbindungen.

odbc_connect()

resource odbc_connect(string dsn, string user, string password [, integer cursor_type)

Falls die Quelle kein Passwort benötigt, kann man einen leeren string übergeben.

odbc_exec()

integer odbc_exec(resource connection, string query)

Führt eine SQL-Query aus und gibt einen Link auf die Ressource mit den Resultaten zurück.

odbc_fetch_into()

integer odbc_fetch_into(resource resultset, array fields [, integer row])

Füllt die Felder eines Datensatzes von resultset in den Array fields. row gibt die Nummer des Datensatzes an, wird es weggelassen wird der Datensatzzeiger um 1 nach vorne bewegt.

odbc_field_len()

integer odbc_field_len(resource result, integer field)

Gibt die Länge eines Feldes in einem ResultSet zurück. Die Nummerierung der Felder beginnt mit 1.

odbc_field_name()

string odbc_field_name(resource result, integer field)

Gibt den Namen eines Feldes zurück (Nummmerierung beginnt mit 1)

odbc_field_num()

integer odbc_field_num(recource result, string name)

Gibt die Nummer des Feldes mit dem Namen name zurück.

odbc_field_type()

string odbc_field_type(resource result, integer field)

odbc_free_result()

boolean odbc_free_result(resource result)

Gibt den Speicher welcher durch result belegt wird frei.

odbc_next_result()

boolean odbc_next_result(resource result)

Verschiebt den Datensatzzeiger eine Position nach vorne.

odbc_num_fields()

integer odbc_num_fields(resource result)

Gibt die Anzahl Felde des ResultSets zurück.

odbc_num_rows()

integer odbc_num_rows(resource result)

Gibt die Anzahl Datensätze des ResultSets zurück.

odbc_result_all()

integer odbc_result_all(resource result, string format)

Gibt einen Dump des ResultSets auf der Webseite aus. Der String format wird in des <table>Tag eingefügt, um Attribute zu setzen. Die Anzahl der Datensätze wird zurückgegeben.

odbc_rollback()

boolean odbc_rollback(resource connection)

Macht alle pendenten Transaktionen der entsprechenden Connection rückgängig. Standardmässig werden alle Transaktionen automatisch "commited". Dies kann mit odbc_autocommit() geändert werden. Nicht alle Datenbanken unterstützen Transaktionen.

Konfiguration

 

Funktionen

dl()

boolean dl(string extension)

Lädt eine dynamische Erweiterung. Gibt FALSE zurück, falls das Modul nicht geladen werden kann. Der Pfad für diese Module wird in php.ini gesetzt, es muss also nur der Filename angegeben werden (unter Windows .dll- unter UNIX .so-Files). Diese Funktion arbeitet nicht wenn PHP als Module eines multithreading Webservers wie Apache2 betrieben wird.

ini_get()

string ini_get(string directive)

Gibt den Wert einer Konfigurationsdirektive zurück.

ini_get_all()

array ini_get_all([string extension])

Gibt einen Array mit den aktuellen Konfigurationsdirektiven zurück.