PHP

Mibeg

Alexander zu Solms

Entstehung PHP

Versionen von PHP

Erfolg von PHP

Source code editor

Komerzielle IDE

Dynamische Webseiten mit PHP

Dynamische Webseiten

Der Nutzer ruft über eine URL(1) oder ein Formular ein PHP-Skript auf dem Server auf. Die enthaltenen Befehle werden vom PHP-Prozessor erkannt und interpretiert(2). Falls notwendig sendet der PHP-Prozessor eine Anfrage an die Datenbank(3) und erhölt die gewünschten Antworten(4). Aus den vorhanden Daten generiert der PHP-Prozessor die endgültige Webseite(5) (HTML-Code), die dem Nutzer übermittelt wird(6). Der Browser bekommt reines HTML zurück und muß sich nicht um PHP kümmern. PHP benötigt deshalb keine bestimmte browserseitige Technik, kann also mit jedem Standardbrowser arbeiten.

Installation PHP mit Komponenten

Einzelkomponenten:

Komplett-Installation

Die Funktion phpinfo()

Öffnen Sie einen Editor und geben Sie folgende Zeilen ein:
<?php
phpinfo();
?>

Erklärung phpinfo()

PHP Anfänge und Endungen

<?php
// Standard-Anfang und Ende
?>
<?
/* Diese Markierung wird für kurze Tags benutzt. Um die Erkennung
für kurze Tags zu aktivieren, muß die entsprechende Anweisung in
der php.ini eingeschaltet werden. Standardmäßig steht sie auf on:
short_open_tag = On; */
?>
<%
/* Hier folgt PHP-Code. Diese Markierung wird für ASP-Tags benutzt.
Um die Erkennung für ASP-Tags zu aktivieren, muss die entsprechende
Anweisung in der php.ini eingeschaltet werden. Standardmäßig steht
sie auf on: asp_tags = On; /*
%>
<SCRIPT LANGUAGE="php">
// Hier folgt PHP-Code
</SCRIPT>

Kommentarzeichen

Interne PHP Funktionen anzeigen

In PHP gibt es viele vordefinierte Funktionen. Um die Anzahl und Namen der vordefinierten Funktionen unserer PHP Version zu ermitteln, wenden wir die vordefinierte Funktion get_defined_functions() an.

print_r(get_defined_functions());

Mit der Funktion print_r betrachten wir den gesamten Inhalt eines Arrays.

Alle Funktionen inklusive Erklärung findet man unter: PHP Manual

Ausgabe mit echo und print()

PHP in HTML einbetten

PHP in HTML mit heredoc-Syntax

Variablen

Ausgabe der Variablen

Variablen und Strings verketten

Anführungzeichen oder Hochkommatas?

$vorname = 'Max';
echo '$vorname';
Ausgabe: $vorname

Variablen-Übergabe per Link

Sicherheitsrisiko bei Variablen

Variablen Übergeben in einem Formular

if Anweisung

$test = 'lernen';
if($test == 'lernen')
{
	echo 'Supi alles richtig.';
}

Der Vergleichsoperator == (zwei Gleichheitszeichen hintereinander!) vergleicht die Variable $test mit der Zeichenkette 'lernen'

else Anweisung

if (Ausdruck)
{
 // Aweisungen, die ausgeführt werden, wenn der Ausdruck wahr ist.
}
else
{
 // Anweisungen, die in allen anderen Fällen ausgeführt werden.
}

Methoden der Klammersetzung

1. BSD-Stil - (Berkeley Software Distribution, Version des UNIX-BS)
if (Ausdruck)
{
 // Aweisungen, die ausgeführt werden, wenn der Ausdruck wahr ist.
}

2. GNU-Stil - (GNU's Not Unix) freies Betriebssystem
if (Ausdruck)
	{
	 // Aweisungen, die ausgeführt werden, wenn der Ausdruck wahr ist.
 	}

3. K&R-Stil (kommt aus der C Programmierung)
if (Ausdruck) {
	// Aweisungen, die ausgeführt werden, wenn der Ausdruck wahr ist.
}

HTTP Funktion header()

Skript ruft sich selbst auf

Variablen auf Existenz testen mit der Funktion isset()

if (isset($_POST['senden']))
{
 // Anweisung, wenn der Submit Button gedrückt wird (True).
}

Fehlermeldungen im Browser anzeigen lassen

Anzeigen von PHP Fehlern

PHP Fehlerkategorien

Bedeutung der PHP Fehler

E_NOTICE Fehler sind unbedenkliche Fehler. Sie können helfen Hinweise auf eventuell vorhandene Bugs zu liefern. Generell stören solche Fehler nicht den Programmablauf, aber das Resultat entspricht vielleicht nicht den Vorstellungen (Bsp.: undefinierte Variable). Das Programm läuft erst einmal ohne Störungen weiter.
E_WARNING Fehler sind keine schweren Laufzeitfehler. Sie stoppen den Programmablauf nicht. E_WARNING Fehler zeigen auf, dass etwas Unvorhergesehenes eingetreten ist. Viele externe Fehler generieren E_WARNING Fehler (Bsp.: Aufruf einer externen Datei mit include, die nicht gefunden wird). Das Programm läuft erst einmal ohne Störungen weiter.
E_ERROR sind schwere Fehler, die die Ausführung des Codes abbrechen (Bsp.: phpinf();) Das Programm läuft nicht weiter.
E_PARSE Fehler treten häufig auf z.B. bei Rechtschreibfehlern oder beim Vergessen des Semikolons hinter einer PHP-Anweisung. E_PARSE sind schwere Fehler, die die Ausführung des Codes abbrechen.
E_STRICT Fehler gibt es seit PHP 5. Sie treten auf bei Konstrukten, die nur aus Gründen der Abwärtskompatibilität zu PHP 4 erlaubt sind. Das Programm läuft weiter.

Arithmetische Operatoren

Ein Operator ist etwas das Sie mit einem oder mehreren
Werten füttern und Sie erhalten als Ergebnis einen anderen
Wert zurück.

Beispiel		Name			Ergebnis
$a + $b		Addition		Summe von $a und $b
$a - $b		Subtraktion		Differenz von $a und $b
$a * $b		Multiplikation  	Produkt von $a und $b
$a / $b		Division		Quotient von $a und $b

Vergleichs-Operatoren

Vergleichs-Operatoren erlauben es - wie der Name schon sagt - zwei Werte zu
vergleichen.

Beispiel	Name		Ergebnis
$a == $b	Gleich		Gibt TRUE zurück, wenn $a gleich $b ist
$a != $b	Ungleich	Gibt TRUE zurück, wenn $a nicht gleich $b ist
$a <> $b	Ungleich	Gibt TRUE zurück, wenn $a nicht gleich $b ist
$a < $b		Kleiner Als	Gibt TRUE zurück, wenn $a kleiner als $b ist
$a > $b		Größer Als	Gibt TRUE zurück, wenn $a größer als $b ist
$a <= $b	Kleiner Gleich 	Gibt TRUE zurück, wenn $a kleiner oder gleich $b ist
$a >= $b	Größer Gleich	Gibt TRUE zurück, wenn $a größer oder gleich $b ist

Logische Operatoren

Logische Operatoren verknüpfen verschiedene Werte.

Beispiel	Name		  Ergebnis
$a and $b	Und		  TRUE wenn sowohl $a als auch $b TRUE ist
$a && $b	Und		  TRUE wenn sowohl $a als auch $b TRUE ist
$a or $b	Oder		  TRUE wenn $a oder $b TRUE ist
$a || $b	Oder		  TRUE wenn $a oder $b TRUE ist
$a xor $b	Entweder Oder 	  TRUE wenn entweder $a oder $b TRUE ist, aber nicht beide
! $a		Nicht		  TRUE wenn $a nicht TRUE ist

Mehrfachauswertungen mit Switch

Wenn Sie mehrere aufeinander folgende Bedingungen gegen ein und dieselbe
Variable testen möchten, ist der if-Befehl sehr aufwändig. Mit switch steht ein
Befehl zur Verfügung, der solche Listen eleganter aufbaut.

switch (Ausdruck)
{
	case wert1:
		//wenn Ausdruck = wert1 wird dieser Code ausgeführt
  		break;	//hier wird die gesamte switch Anweisung verlassen
	case wert2:
  		//wenn Ausdruck = wert2
		break;
	default:
  	 	//wenn keiner von beiden Werten zutrifft,
  	 	//wird dieser Code ausgeführt
}

Datentypen

Typ:			Beispiel:	Beschreibung:
Integer			5		Ganzzahl
Double			3.24		Fliesskommazahl
String			"Hallo"		Zeichenkette
Boolean			True		True oder False

Überprüfung des Datentyps

$name = 'Max';
echo gettype($name);	 	// ergibt String

$tel      = 5503843;
echo gettype($tel);		// ergibt Integer

$preis   = 53.67;
echo gettype($preis);		// ergibt Double

$ware   = true;
echo gettype($ware);		// ergibt Boolean

Umwandeln von Datentypen

$tel      = '6803743';
echo gettype($tel);		 // ergibt String

settype($tel, "integer");
echo gettype($tel);		 // ergibt Integer

Ausgabe von Strings

Sicheres Mail-Formular mit PHP

Numerisches Array

$vorname=array("alex", "paul", "gerd");
echo $vorname[0];  //ergibt alex
echo $vorname[1];  //ergibt paul
echo $vorname[2];  //ergibt gerd

Array in einen String umwandeln

String in ein Array umwandeln

Assoziatives Array

$adr=array
(
            "vorname"=>"Susi",
            "nachname"=>"Sonnenschein"
);
echo $adr["vorname"];  		//ergibt Susi
echo $adr["nachname"];  	//ergibt Sonnenschein

Zweidimensionales numerisches Array

$name=array(array("max", "paul", "gerd"),
		array("Muster", "Müller", "Maier"));
echo $name[0][0];	//ergibt max
echo $name[1][0];	//ergibt Muster

Zweidimensionales assoziatives Array

$adr=array
(
            array(
	      "Vorname"=>"Kim",
            	      "Nachname"=>"Sonnenschein",
                       "Alter"=>26,
                       "Wohnort"=>"Bonn"
	     ),
            array(
	      "Vorname"=>"Alex",
            	      "Nachname"=>"Musterman",
                      "Alter"=>39,
                      "Wohnort"=>"Mainz"
	     )
);

echo $adr[1]["Nachname"];  			//ergibt Musterman

Informationen über Arrays anzeigen

foreach()-Schleife

Um ein Array komfortabel zu durchlaufen wurde ab PHP 4 die Funktion foreach() eingeführt
foreach(array as element)
{
	...
}

Beispiel foreach()-Schleife

$vorname=array("alex", "paul", "gerd", "hugo");

foreach($vorname as $vname)
{
	echo "$vname ";
}

Ausgabe: alex paul gerd hugo

while()-Schleife

while (Bedingung)
{
	Schleifeninhalt
}

while() Schleife Beispiel

$counter=0;
$zahl=6;
while ($zahl>$counter)
{
  echo "Counter hat den Wert: $counter <br>";
  $counter++;
}

Der Break Befehl

$counter=7;
$zahl=6;
while ($zahl<$counter)
{
  echo "Counter hat den Wert: $counter <br>";
  $counter++;
  if ($counter==50) break;
}

do-while Schleife

$counter=7;
$zahl=6;
do
{
  echo "Counter hat den Wert: $counter <br />";
  $counter++;
  if ($counter==50) break;
} while ($zahl<$counter);

for() Schleife

           1             2             4
for (Startanweisung; Bedingung; Schleifenanweisung)
{
           3
	Schleifeninhalt;
}

PHP greift auf das Dateisystem zu

Die Funktion fopen()

r 	öffnet eine Datei zum Lesen und setzt den Datenzeiger an
	den Anfang
r+ 	öffnet eine Datei zum Lesen und Schreiben. Setzt den
	Datenzeiger an den Anfang
w	öffnet eine Datei zum Schreiben, sonst wird sie angelegt.
	Vorhandene Daten werden gelöscht
w+ 	öffnet eine Datei zum Lesen und Schreiben, sonst wird sie
	angelegt. Vorhandene Daten werden gelöscht
a 	öffnet eine Datei zum Schreiben, sonst wird sie angelegt.
	Vorhandene Daten bleiben erhalten. Datenzeiger steht am Ende
a+ 	öffnet eine Datei zum Lesen u. Schreiben, sonst wird sie angelegt.
	Vorhandene Daten bleiben erhalten. Datenzeiger steht am Ende

Konstanten

include() und require()

Funktionen

Funktion ohne Argumente

function hallo()
{
	echo "<h1>Guten Abend! Willkommen bei der ersten PHP Funktion.</h1>";
}
hallo();			//hiermit rufen wir die Funktion auf

Globale Variablen in Funktionen

$vn = 'alex';
function my()
{
	global $vn;
	echo $vn;
}
my();

Funktion mit Argument

function ausgabe($text)
{
	echo "$text <br>";

}
ausgabe("Dies ist Zeile 1");
ausgabe("Dies ist Zeile 2");
ausgabe("Dies ist Zeile 3");

Funktion mit Rückgabewert

function ausgabe($ZahlEins, $ZahlZwei)
{
	$ergebnis = $ZahlEins + $ZahlZwei;
  	return $ergebnis;
}
echo ausgabe(4,9);	=>ergibt 13

Funktion mit mehreren Rückgabewerten

function ausgabe($ZahlEins, $ZahlZwei)
{
  $sum_ergebnis = $ZahlEins + $ZahlZwei;
  $mal_ergebnis = $ZahlEins * $ZahlZwei;
  return array($sum_ergebnis, $mal_ergebnis);
}

Rekursive Funktion

function countdown($startwert)
{
  echo $startwert;
  if ($startwert > 0)
  {
    countdown($startwert-1);
  }
}
countdown(8);

Die date() Funktion

Datums-Formatierungen I

Datums-Formatierungen II

Datums-Formatierungen III

Datumsfunktionen

Datumsfelder umwandeln

Cookies

setcookie()

Cookie Anwendung

PHP Sicherheit

Verhindern Cross-Site Scripting (XSS)

siehe Bsp.: bm.it-openproject.de/test_gast/gastbuch.php o. .../test_sec (Bild einfügen mit $GLOBAL

Erlauben von (X)HTML Tags

Bulletin=Bericht

Verhindern SQL Injection

siehe http://localhost/sicherheit/mysql/sure_sql.php