php Logo

Paul Ferd. Siegert Datenbankgestützte Webseiten

 
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ß

  • .php
  • .php3
  • .php4
  • .phtml

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&ouml;ne Gr&uuml;&szlig;e aus L&uuml;neburg.
    (Funktioniert aber nur wenn als Zeichensatz im Editor Latin-1 eingestellt ist.)
  • rawurlencode($str): Konvertiert als URL
  • rawurldecode($str): Konvertiert URL zurück