PHP: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 144: Zeile 144:


* [[/Wie werden Daten weitergereicht?|Wie werden Daten weitergereicht?]]
* [[/Wie werden Daten weitergereicht?|Wie werden Daten weitergereicht?]]
* [[/Erweiterte Techniken: URL- und Form-Rewrite|Erweiterte Techniken: URL- und Form-Rewrite]]
* [[/Erweiterte Techniken (URL- und Form-Rewrite)|Erweiterte Techniken (URL- und Form-Rewrite)]]
* [[/Probleme mit der Übertragung via URL|Probleme mit der Übertragung via URL]]
* [[/Probleme mit der Übertragung via URL|Probleme mit der Übertragung via URL]]
* [[/Zwischen GET und POST unterscheiden|Zwischen GET und POST unterscheiden]]
* [[/Zwischen GET und POST unterscheiden|Zwischen GET und POST unterscheiden]]

Version vom 24. Januar 2009, 20:19 Uhr

Die Programmiersprache PHP (eigentlich: PHP Hypertext Processor; 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

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
  • einfache objektorientierte Programmierung
  • Session-Verwaltung
2004.07.13 5.0.0
  • Neue Sprachkonstrukte (z. B. private Methoden und Attribute, Überladung) erleichtern objektorientiertes Programmieren
  • Exceptions
  • Reflections API
  • MySQLi (MySQL improved, objektorientiert und auf aktuelle MySQL-Versionen zugeschnitten)
  • SQLite (vollständig client-basiertes, dem SQL Standard zu 95 % entsprechendes Datenbanksystem)
  • SimpleXML (einfacher XML-Parser, Ändern von Einträgen sowie Hinzufügen von Kindelementen sind möglich)
  • DOM-Unterstützung (objektorientiert)
2005.11.24 5.1.0
  • Datenbankschnittstelle PDO mit MySQL-Unterstützung
2006.11.02 5.2.0
  • schnellere und effizientere Speicherverwaltung
  • Filter-Erweiterung (Filtern und Verifizieren von Benutzereingaben)
  • JSON (Serialisierung von PHP-Variablen, nützlich im Zusammenspiel mit Ajax)
  • ZIP (Auslesen und Erstellen von ZIP-Archiven)
  • objektorientierte Datums-Erweiterung (DateTime und DateTimeZone)
5.3.0
  • Namensräume
  • "mysqld"-Backend für die Erweiterungen "mysql", "mysqli" und voraussichtlich auch PDO (die externe Bibliothek "libmysql" ist damit nicht mehr erforderlich)
geplant
(ca. 2010)
6.0.0
  • Entfernung von "Altlasten" wie Register Globals, Magic Quotes und Safe Mode
  • vollständige Unicode-Unterstützung

Installation

Konfiguration

Grundlagen

Alles folgende betrifft PHP 5 unter Unix. Frühere Versionen und andere Betriebssysteme werden nicht berücksichtigt.

PHP, HTML und JavaScript

Programmieren mit PHP

Objektorientierte Programmierung

Fehlerbehandlung

Hilfsfunktionen

Interaktive Webseiten

Formulare auswerten

Daten per URL weiterreichen

Cookies

Verbindungssteuerung

Ausgabesteuerung

Sitzungsverwaltung

Zugriff auf das Dateisystem

Servervariablen und -verbindungen

Sicherheit

Die Datenbanksysteme

Grundfunktionen für MySQL

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

  1. Datenbankentwurf
  2. Umfrageformular
  3. Formulardaten und Ergebnisdarstellung
  4. 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

vote.html

3. Formularauswertung und Ergebnisdarstellung

results.php

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:

Weblinks

Allgemeines

Dokumentation

Lehrgänge

Beispielskripte



  • GPHPedit - PHP-Editor für Gnome mit Syntaxhighlighting für PHP, HTML, CSS, JavaScript und SQL


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();