Einleitung
PHP Überblick
PHP Sprache
PHP Pakete
Beispiele
Server Side Includes (SSI)
LiveWire
von Netscape
PHP/FI 2.0:
Personal Home Pages / Forms Interpreter
PHP 3.0:
PHP Hypertext Preprocessor
Vergleichbare Ansätze:
ASP Active Server Pages (MS)
JSP Java Server Pages
CGI Programm oder
Apache Modul
gute Datenbank Unterstützung
Einbettung von Programmen in HTML
aber auf der Seite des Web-Servers
die Clients sehen nur noch die Ergebnisse
als SGML Anwendung:
<?php ...Programm... ?>
als Script:
<SCRIPT LANGUAGE="php">...</SCRIPT>
bei Livewire:
<server>...</server>
Einbettung:
<html> <head> <title>Test</title> </head><body> Test auf PHP: <?php echo "<p>Hallo von PHP</p>"; ?> <?php echo "<p>$HTTP_USER_AGENT</p>"; ?> <?php show_source("hallo.phtml"); ?> </body>
Ausgabe:
Test auf PHP: Hallo von PHP Mozilla/4.5 [en] (X11; I; Linux 2.0.35 i586) ...
Die Syntax ist von C, Java und Perl abgeleitet.
Konversion von Zahlen und Strings ist von Kontext abhängig.
explizite Anpassung mit Casts:
(int)
, (double)
, (string)
.
Keine Deklarationspflicht für Variablen. aber
static $x = "Hallo !\n";
local $x = "Hallo !\n";
global $x;
Operatoren und Ausdrücke wie in C. y += x--
Zugriff auf Umgebungsvariablen etc.
$GLOBALS[´HTTP_REFERER´]
$foo = "0"; $foo++; $foo += 1; $bar = (string) $foo; $foo = (int) $bar; $a = "b"; $$a = "c"; echo $b;
Statements, Expressions,
{
Statement-Folge }
if-Statement
if (condition1) statement1 [ elseif (condition2) statement2 ] [ else statement3 ]
if (condition): endif
for-Statement
for ([initial-expression]; [condition]; [increment-expression]) statement
while-Statement
while (condition) { statement }
while (condition): endwhile
do { statement } while (condition)
Zum Beenden von Schleifen
break
Wahrheitswerte wie in Perl.
TRUE: Zahl ungleich 0
, nicht-leere Zeichenketten,
nicht-leere Objekte
und FALSE: 0
, ""
,
leere Objekte
PHP Programme und HTML Texte dürfen sich Überlappen.
<?php if ($a == 9): ?> <p>Text falls der Wert 9 ist.</p> <?php endif; ?>
Funktionen.
function tuwas($a) { echo "Eingabe = ", $a; } tuwas("mit einem Text");
function tuwas($a) { return "Eingabe = " . $a; } echo tuwas(´mit einem Text´);
Adabas D
Arrays, Felder
BC, beliebig genaue Arithmetik
Kalender
Datum, Zeit
dBase
dbm
Directories, Verzeichnisse
Aufrufe externer Programme
filePro
Filesystem, Dateisystem
HTTP, Cookies
Bildbearbeitung, -erzeugung
IMAP, Email
Informationen über PHP
LDAP Verzeichnisdienst
Mathematische Funktionen
mSQL
MySQL
Sybase
Netzwerk, Sockets
ODBC
Oracle
PostgreSQL
Regular Expressions
Solid
SNMP
Strings, Zeichenketten
URL Bearbeitung
Datentypen
Ursprünglich von Berkeley, db, gdbm.
Auf (fast) allen Unix Systemen ohne Installation verfügbar.
nur (Key, Value)-Paare
Datenbank Identifikation
int dbmopen(filename,"rwn")
dbmclose(db-identifier)
Zugriff auf Werte
bool dbmexists(db-identifier, key)
string dbmfetch(db-identifier, key)
bool dbmdelete(db-identifier, key)
string dbmfirstkey(db-identifier)
string dbmnextkey(db-identifier, key)
Einfügen von Werten
bool dbminsert(db-identifier, key, value)
bool dbmreplace(db-identifier, key, value)
Einbettung mittels auto_prepend
,
oder direkt in die Seite
Verwendung
<?php /* $counter_start="9999"; */ echo "<h3>" . counter(). " Zugriffe,"; echo " " . modified("de") . "</h3>"; ?>
Counter Funktion
$filename=$SCRIPT_FILENAME; $counter_start="1"; function counter() { global $filename, $counter_start; $counter_dir="/tmp/"; $counter_db=$counter_dir . "zaehler.dbm"; if (file_exists("$counter_db")) { $db=dbmopen($counter_db,"w"); if ( dbmexists($db,$filename) ) { $cnt=dbmfetch($db,$filename); if ($counter_start=="1") { $cnt++; } else { $cnt=$counter_start; } dbmreplace($db,$filename,$cnt); } else { $cnt=$counter_start; dbminsert($db,$filename,$cnt); } dbmclose($db); return "$cnt"; } else { echo "Attempt to create file: " . $counter_db; $cnt=$counter_start; $db=dbmopen($counter_db,"n"); dbminsert($db,$filename,$cnt); dbmclose($db); return "$cnt"; } }
Modified Funktion
$filename=$SCRIPT_FILENAME; function modified($lang) { global $filename; $lm=date("d M Y H:i:s",filectime($filename)); if ($lang=="de") { return "Geändert am $lm"; } else { return "Last modified: $lm"; } }
Auf jedem Web-Server as CGI Programm
zum Beispiel bei Apache:
AddType application/x-php3-script .phtml Action application/x-php3-script /cgi-bin/php/
bei Apache als ladbares Modul
Aktivierung einzelner Datenbanken und Pakete
Weitere Direktiven z.B. in php3.ini
oder
in Apache Konfigurationsfiles mit Prefix php3_
oder im Code
Automatisches Hinzufügen
auto_append_file
string
auto_prepend_file
string
Fehleranzeige
display_errors
bool
error_log
string
Reihenfolge der Variablen, Get, Post, Cookies
gpc_order
string, z.B. "GPC"
track_vars
bool
Beispiel: php3.ini
sollten mit neuen Versionen behoben sein
Auslieferung von Dateien
http://host/cgi_bin/php?/etc/passwd
http://host/cgi_bin/php/etc/passwd
Redirekt
--enable-force-redirect
Setzen der Verzeichnisse
doc_root
,
user_root
Auslagern des Interpreters
#!/usr/local/bin/php
LiveWire
Servlets
Java Server Pages (JSP)
PHP4 und Zend, Beta 3, Ende 1999
höhere Performance durch Kompilation
HTTP Sessions eingebaut
bessere Portabilität, auch für MS
© Universität Mannheim, Rechenzentrum, 1998-2001.
Heinz Kredel Last modified: Wed Dec 20 22:19:34 MET 2000