PHP ist eine weit verbreitete universelle Skriptsprache, welche speziell für die Belange der HTML-Programmierung ausgelegt worden ist.
PHP ermöglicht das Erstellen dynamischer Webseiten, wobei die Seiten selbst auf dem Server aufbereitet werden und für den aufrufenden Client die Seite sich in keiner Weise von einer statischen Website unterscheidet. Auf dem Client sind also außer einem einfachen Webbrowser keine weiteren Programme (z.B. Java) notwendig.
Da PHP auf dem Webserver selbst arbeitet, ist ein einfacher Zugriff auf eine in der Umgebung des Webservers befindliche Datenbank leicht möglich.
PHP läuft nicht nur auf Server sondern arbeitet als GUI auch schon auf dem Desktop. Zwar ist PHP nicht 100% geeignet um auf client-rechnern zu laufen, aber immerhin ist es möglich lauffähige Programme für die Clientseite zu programmieren. Für diese Anwendung von PHP ist das Projekt http://gtk.php.net zuständig.
PHP wird interpretiert. Es gibt mehrere Möglichkeiten Php-Anwendungen zu optimieren:
- Php-Accelerator (z.B. Ioncube). Das spart Lade- und Übersetzungszeiten.
session.cache-limiter in php.ini auf private setzen. Das liefert cachebare Inhalte.
- Reverse Proxy vorschalten; gilt natürlich nicht nur für Php.
mod_gzip in Apache aktivieren. Das spart u.U. Übertragungszeiten.
Links
PHP bei Wikipedia (de)
Die FAQ der Newsgroup de.comp.lang.php beantwortet viele konkrete Fragen
Eine Erweiterung von PHP mit sehr vielen nützlichen Programmen
Siehe auch SprachePHP im Software-Entwickler-Wiki! weitere gute Links
Artikel Securing PHP auf Securityfocus.com
Tipps & Tricks
wenn man alten Sourcecode einsetzt, der nur <? als öffnenden Tag verwendet (statt <?php), muss man in der php.ini short_open_tag = On setzen, sonst bekommt man nur Quellcode-Brocken auf den Bildschirm
manchmal muss man auch das Setzen der GET/POST/Cookie/etc.-Parameter als globale Variablen aktivieren, damit die Skripts richtig funktionieren: in php.ini: register_globals = On
- Wer register_globals aus Sicherheitsgründen lieber auf Off lassen möchte, kann diese Variablen mit $_GET[], $_POST[], $_COOKIE[] und $_SESSION[] erreichen.
Von den beiden oben genannten Tricks kann ich nur abraten. Gerade der zweite ist sicherheitstechnisch äußerst bedenklich. Schreibt alte Skripte lieber um, auch wenn das eine Menge Arbeit bedeutet, es wird euch Ärger ersparen:
ist short_open_tag = On gesetzt, erkennt der Interpreter auch Zeilen wie <?xml version="1.0"?> als PHP-Code und XHTML würde als Ausgabe ausscheiden. Das ist zwar nicht weiter wild, wenn ihr eure Ausgabe auf HTML 4.0 auslegt, aber XHTML wird in Zukunft eine große Rolle spielen und gerade in der IT sollte man sich vor Neuem nicht verschließen, oder?
das Setzen von register_globals = On ist ein Sicherheitsproblem und deswegen seit PHP4 auch standardmäßig abgeschaltet. Mit dieser Einstellung können Script Kiddies direkt auf die Variablen eures PHP-Skripts Einfluß nehmen, was besonders gefährlich ist wenn ihr mit Datenbanken arbeitet. Es ist jedoch relativ einfach, alte Skripte mit der Funktion import_request_variables wieder zum laufen zu bekommen.
Ein Beispiel:
// Altes Skript // Übergeben wird ein String aus <input type="text" name="name" /> echo "Hallo $name.\n"; // Neues Skript // Auch hier wird ein String aus <input type="text" name="name" /> übergeben import_request_variables("gpc","get_"); echo "Hallo $get_name.\n";
import_request_variables holt Variablen, wie man es gewohnt ist in sein Skript. Als ersten Parameter kann man angeben, welche Art von Variablen geholt werden sollen. g steht dabei für GET, p für POST und c für COOKIE. Der zweite Parameter gibt den Präfix für die Variablennamen an. In dem oben stehenden Beispiel sollte man also vorsichtig mit allen Variablen seien, die mit get_ beginnen, denn diese kommen vom Benutzer und könnten auch "Bla'; DELETE FROM TABLE Users" beinhalten.
Fragen
Frage: Wie zum Henker bring ich Apache dazu Dateien vom Typ "application/x-httpd-php4" anzuzeigen statt sie zum Download anzubieten?
AddType application/x-httpd-php .php4 .php .php3 .phtml ...