PHP: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 8: | Zeile 8: | ||
! Programme !! Beschreibung | ! Programme !! Beschreibung | ||
|- | |- | ||
| [[ | | [[Phpmyadmin]] || Grafische Benutzeroberfläche zur Verwaltung von [[Mysql]]-Datenbanken | ||
|- | |- | ||
| [[Typo3]], [[Joomla]] / [[Mambo]], Drupal || [[Content Management System]]e | | [[Typo3]], [[Joomla]] / [[Mambo]], Drupal || [[Content Management System]]e |
Version vom 15. Februar 2009, 01:51 Uhr
Die Programmiersprache PHP Hypertext Processor / PHP (ursprünglich: Personal Home Page Tools) ist eine Skriptsprache mit einer an C bzw. C++ angelehnten Syntax, die vor allem zur Erstellung von dynamischen Webseiten oder Webanwendungen verwendet wird. PHP zeichnet sich besonders durch die leichte Erlernbarkeit, die breite Unterstützung von Datenbanken, Einbindung von Internet-Protokollen und die Verfügbarkeit zahlreicher, zusätzlicher Funktionsbibliotheken aus. Es gibt beispielsweise Programmbibliotheken, um Bilder und Grafiken zur Einbindung in Webseiten dynamisch zu erzeugen.
Der PHP Job Scheduler führt PHP-Skripte zu bestimmten Zeiten aus, ähnlich dem Cron-Dienst.
Zu den bekanntesten in PHP geschriebenen Anwendungen gehören die folgenden.
Programme | Beschreibung |
---|---|
Phpmyadmin | Grafische Benutzeroberfläche zur Verwaltung von Mysql-Datenbanken |
Typo3, Joomla / Mambo, Drupal | Content Management Systeme |
Wordpress | ein Weblog Publishing System |
Mediawiki | Wiki-Software |
Geschichte
PHP wurde 1995 von Rasmus Lerdorf entwickelt. Der Begriff stand damals noch für "Personal Home Page Tools" und war als Ersatz für eine Sammlung von Perl-Skripten gedacht, die Lerdorf zur Protokollierung der Zugriffe auf seinen Online-Lebenslauf geschrieben hatte. Bald schuf er jedoch eine grössere Umsetzung in der Programmiersprache C, mit der PHP noch heute entwickelt wird. Das schliesslich veröffentlichte PHP/FI (FI stand für "Form Interpreter") war Perl sehr ähnlich, wenn auch viel eingeschränkter, einfacher, und ziemlich inkonsistent.
PHP 3 wurde von Andi Gutmans und Zeev Suraski neu geschrieben, da das inzwischen erschienene PHP/FI 2 ihrer Meinung nach für E-Commerce zu schwach war; auch die Bedeutung der Abkürzung "PHP" wurde hierbei geändert. Lerdorf kooperierte mit Gutmans und Suraski, und so wurde die Entwicklung von PHP/FI eingestellt. Obwohl PHP 3 für den professionellen Einsatz noch keine allzu grosse Funktionsvielfalt bot und einige Schwächen aufwies, brachte es die Verbreitung von PHP bedeutend voran. Die von Gutmans und Suraski gegründete Firma Zend Technologies Ltd. entwickelte in der Folge die Zend Engine 1, die den Kern der PHP-4-Standardimplementierung bildet. Mit PHP 4 wurde die Ausführungsgeschwindigkeit komplexer Anwendungen und die Sicherheit bei Verwendung globaler Variablen verbessert. Eingeführt wurden die Unterstützung für viele weitere Webserver, das Sessionmanagement, die Ausgabepufferung sowie viele neue Sprachkonstrukte.
Da das World Wide Web Ende der 1990er Jahre stark wuchs, bestand grosser Bedarf an Skriptsprachen, mit denen sich dynamische Webseiten realisieren liessen. PHP wurde für die Webentwicklung mit der Zeit populärer als der vorherige De-facto-Standard Perl, da es durch seine Spezialisierung als einfacher erlernbar gilt.
Datum | Version | Neuerungen |
---|---|---|
1995.06.08 | 1.0 | |
1997.11.12 | 2.0.0 | |
1998.06.06 | 3.0.0 | |
2000.05.22 | 4.0.0 |
|
2004.07.13 | 5.0.0 |
|
2005.11.24 | 5.1.0 |
|
2006.11.02 | 5.2.0 |
|
5.3.0 |
| |
geplant (ca. 2010) |
6.0.0 |
|
Installation
Konfiguration
Grundlagen
Alles folgende betrifft PHP 5 unter Unix. Frühere Versionen und andere Betriebssysteme werden nicht berücksichtigt.
PHP, HTML und JavaScript
- PHP und HTML
- Dateien einbinden
- Ausgabe von Daten an den Webbrowser
- Variablen
- Datentypen
- Konstanten
- Operatoren
- Zeichenkettenverarbeitung
- Formatierfunktionen
- Mathematische Funktionen
- Zeit- und Datumsfunktionen
- Arrays
- Reguläre Ausdrücke
- Webspezifische Funktionen
Programmieren mit PHP
Objektorientierte Programmierung
Fehlerbehandlung
- Die Fehlerbehandlungskonzepte
- Abbruchsteuerung
- Laufzeitfehler
- Die Fehlerklasse "Exception" und "try/catch"
- Fehler vermeiden
- Fehlersuche
Hilfsfunktionen
- Übersicht
- Code erzeugen
- HTML-Sonderzeichen mit "get_html_translation_table" bearbeiten
- Modularisierung von Programmcode
Interaktive Webseiten
Formulare auswerten
- GET und POST
- Daten aus einem Formular ermitteln
- Formulare und Javascript
- Komplexe Formulare
- Kreditkartenprüfung
Daten per URL weiterreichen
- Wie werden Daten weitergereicht?
- Erweiterte Techniken (URL- und Form-Rewrite)
- Probleme mit der Übertragung via URL
- Zwischen GET und POST unterscheiden
Cookies
Verbindungssteuerung
Ausgabesteuerung
Sitzungsverwaltung
Zugriff auf das Dateisystem
- Zugriff auf das Dateisystem
- Dateien lesen und schreiben
- Dateioperatoren
- Umgang mit Verzeichnissen
- Hinaufladen von Dateien
Servervariablen und -verbindungen
- Die Umgebungsvariablen des Webservers
- Verbindungsmöglichkeiten
- Zugriff auf Ressourcen mit Socketfunktionen
- FTP-Funktionen
Sicherheit
Die Datenbanksysteme
Grundfunktionen für MySQL
- Funktionsübersicht
- Verbindung mit der Datenbank
- Datenbank anlegen
- Datensätze lesen
- Datensätze schreiben
- Daten löschen
- Datenbanken anlegen und löschen
- Persistente Verbindungen
Erweiterte Funktionen für MySQL
Neue Funktionen für MySQL mit MySQLi
Datenbanklösungen
Kommunikation und Datenaustausch
Netzwerkprotokolle
XML
XSLT
Eigene PHP-Skripte
DAS FOLGENDE MUSS NOCH ÜBERARBEITET WERDEN
Funktionsnamen unterscheiden nicht zwischen Klein- und Grossschreibung
Klassennamen unterscheiden nicht zwischen Klein- und Grossschreibung
Konstanten können nur Skalarwerte (Boolesche Werte, Integer, Double, String) sein. Einmal gesetzte Konstanten können nicht geändert werden.
Schlüsselwörter
Klassen sind die Definition einer Struktur, die Eigenschaften (Variablen) und Methoden (Funktionen) enthält:
class Person { var $name = ; function name ($newname = NULL) { if (! is null($newname)) { $this->name = $newname; } return $this->name; } }
Sobald eine Klasse definiert ist, kann mit Hilfe des Schlüsselworts new eine beliebige Anzahl von Objekten erzeugt werden. Die Eigenschaften und Methoden sind dann über das Konstrukt "->" zugänglich.
$ed = new Person; $ed->name('Edison'); printf("Hallo, %s\n", $ed->name);
Ressourcen dienen der Identifikation der Verbindung mit einer Datenbank.
Verwendung
Neustarten des Apache-Servers.
# /usr/local/apache2/bin/apachectl restart
Erstellung des Skripts "phpinfo.php".
# vi /usr/local/apache2/htdocs/phpinfo.php <?php phpinfo() ?>
Aufruf der PHP-Systeminformationen über den Webbrowser mit http://localhost/phpinfo.php
Beispiel: Umfrage
- Datenbankentwurf
- Umfrageformular
- Formulardaten und Ergebnisdarstellung
- Verbesserungsideen
Testumgebung: Apache / PHP / MySQL
1. Datenbankentwurf
Datenbank und Tabelle anlegen.
# mysql -u imd -p Enter password: mysql> status mysql> create database test_vote; mysql> use test_vote mysql> create table votelanguage (id int not null auto_increment, choice tinyint not null, primary key (id));
2. Umfrageformular
3. Formularauswertung und Ergebnisdarstellung
Zum Herstellen einer Verbindung zur Datenbank MySQL wird die PHP-Funktion "mysql_pconnect" verwendet, an welche folgende Informationen übergeben werden:
- Benutzername
- Passwort
- Rechnername / Hostname: nur nötig, wenn der Webserver (also Apache) auf einem anderen Rechner läuft als MySQL
Zuerst wird die Passwortdatei "mysql_connect-info.inc.php" ins Verzeichnis "/usr/local/httpd/htdocs/_private" gestellt:
<?php $mysqluser="imd"; // Benutzername für den MySQL-Zugang $mysqlpasswd="imd"; // Passwort $mysqlhost="localhost"; // Name des Rechners, auf dem MySQL läuft $mysqldbname="test_vote"; // Name der Datenbank ?>
Die erste Anweisung im Skript "results.php" ist ein include-Kommando, mit dem "mysql_connect-info.inc.php" geladen wird.
4. Verbesserungsideen
Layout: Tabelle. Bunte Balkengrafik.
Formular und Ergebnis auf einer Seite: Grundsätzlich möglich. Es ist aber besser, wenn das Ergebnis erst nach der Abstimmung gezeigt wird.
Optionen: Textfeld für die Angabe eines anderen Sängers oder für Kommentare oder zusätzliche Fragen zum Teilnehmer usw.
Mehrfachauswahl: Im HTML-Formular würden dafür Auswahlkästchen statt Optionsfelder verwendet. Im Datenbankdesign wären die Änderungen aufwendiger.
Schutz gegen Manipulation: Setzen eines Cookies mit Zufallswert auf dem Rechner des Teilnehmers, wobei derselbe Zufallswert in der Datenbank gespeichert wird. Es wäre auch möglich, nur nach einem vorherigen Login mit E-Mail-Adresse und Passwort abzustimmen. In der Datenbank wird gespeichert, wer schon gewählt hat.
Fertige PHP-Lösungen für Umfragen:
PHP-MySQL API
1. Die MySQL-PHP Funktionsbibliothek
Die wichtigsten PHP-Datenbankfunktionen für MySQL:
Kategorie | Funktion | Beschreibung |
---|---|---|
Verbindung | mysql_connect() | Verbindung zum Datenbankserver herstellen |
Verbindung | mysql_close() | Verbindung zum Datenbankserver beenden |
Verwaltung | mysql_create_db() | Datenbank einrichten |
Verwaltung | mysql_drop_db() | Datenbank löschen |
Verwaltung | mysql_select_db() | Datenbank auswählen |
Datenbankabfrage | mysql_query() | Datenbankabfrage stellen |
Suchergebnisse | mysql_fetch_row() | Auslesen der Ergebnismenge als Datensätze |
Suchergebnisse | mysql_num_fields() | Anzahl der Datenfelder (Tabellenspalten) |
Suchergebnisse | mysql_num_rows() | Anzahl der Datensätze (Tabellenzeilen) |
Suchergebnisse | mysql_field_name() | Name eines Datenfeldes (Tabellenspalte) |
Fehlermeldungen | mysql_errno() | Fehlernummer |
Fehlermeldungen | mysql_error() | Fehlermeldung |
2. Verbindung herstellen
Aufbau einer Verbindung zum Datenbankserver:
linkid = mysql_connect([Host][,Nutzer][,Passwort]);
Wenn der Parameter für den Hostnamen fehlt, ist "localhost" der Standard. Der Parameter "link-id" ist eine ganze Zahl, die zur Identifikation der Verbindung dient und beim Verbindungsabbau wieder angegeben werden muss:
mysql_close([link-id]);
Beispielskript "/usr/local/apache2/htdocs/phpdatabase.php".
Hostauswahl
Hosten der eigenen Website:
- Backups
- Sicherheitslücken stopfen
- regelmässige Wartung
- regelmässige upgrades
- Pflege der DNS-Server
- usw.
Hosten der eigenen website durch jemand anderen:
- Unterstützte Sprachen: PHP, Java, CGI, JavaScript usw.
- Unterstützte Datenbanken: MySQL, Postgresql, Sybase, usw.
- Serverkontrolle: unbedingt Zugang als super user, um bei Bedarf selber die Konfiguration zu verändern
- Serverzugang: FTP, telnet, SSH, usw.
- Konfigurationsmöglichkeiten: webserver-Einstellungen/Konfiguration, cron jobs, htaccess, usw.
- Administrations-GUI: E-Mail, Datenbank, Benutzeranlegen, usw.
- Bandbreite: website, e-mail, streaming media, Datenbankverbindungen, usw. ; wieviele Zugriffe? wird FTP mitgerechnet?
- Preis: Basierend auf features, Vertragsdauer, usw.
Auswahl von Hosts:
- www.olm.net
- www.lunarpages.com
- www.globat.com
- www.vervehosting.com
- www.ipowerweb.com
- www.websytz.com
- www.infioniology.com
- www.powweb.com
- www.inmotionhosting.com
- www.hostcolor.com
Weblinks
Allgemeines
- PHP (de.Wikipedia.org)
- PHP Frameworks (PHPFrameworks.com)
Dokumentation
- PHP (PHP.net)
- Zend : the PHP company (Zend.com)
- SelfPHP (SelfPHP.com)
- Perlunity (PerlUnity.de) - Perl, PHP, JavaScript
Lehrgänge
- Dynamic Webpages : der deutsche Knotenpunkt für PHP (Dynamic-Webpages.de)
- PHP-Tutorial (PHP-Center.de) - aus dem Jahr 1999
- PHP 4.3 (TEIALehrbuch.de)
Beispielskripte
- PX : the PHP code exchange (PX.Sklar.com)
- Weberdev.com - mit PHP code examples, PHP MySQL articles usw.
- PHP-Archiv (PHPArchiv.de)
- http://www.php.net/downloads.php - Download
- PHP links
- OMNIGENA classroom
- Digicomp-Kurs
- FAQ der Newsgroups de.comp.lang.php
- Hardened PHP - sucht nach PHP-Lücken
- GPHPedit - PHP-Editor für Gnome mit Syntaxhighlighting für PHP, HTML, CSS, JavaScript und SQL
- PHP (Grundlagen und Praxis) (DrWeb.de)
Spreadsheet Excel Writer
Mit der PEAR-Bibliothek geht es recht einfach, es lassen sich sogar einzelne Mappen definieren.
## Neues Excel-Dokument anlegen $workbook = new Spreadsheet_Excel_Writer(); $workbook->send(’test.xls'); $worksheet->write($zeile, $spalte, ’Spalte 1',$format_bold); ## Ausgabe der Excel-Datei $workbook->close();