Super Tutorials - Das PHP Tutorial 
Verzeichnis:
- 1. Die richtige Software
- 1.1 XAMPP korrekt installieren (Windows)
- 1.2 XAMPP richtig konfigurieren (Windows)
- 2. PHP lernen
- 2.1 php-Dateien erstellen
- 2.2 PHP Variablen
- 2.3 Bedingungen (wenn dann sonst)
- 2.4 Parameter
- 2.4.1 GET-Parameter
- 2.4.2 POST-Parameter
- 2.4.3 COOKIE-Parameter
- 2.5 Formulare
- 2.6 Ein Login (Nur Autorisation)
- 2.7 Ein Login (mit COOKIE-Parameter)
- 2.8. Der Logout (mit COOKIES)
Um PHP Dateien ausführen zu können benötigt man eine Art Server. Dazu empfehle ich XAMPP!
Bitte downloade Dir
XAMPP und gehe zum
nächsten Schritt.
1. Schritt - Ausführen
Entpacke die Datei und führe sie aus. Sollte ein Sicherheitsfenster erscheinen, bestätige bitte mit "Ausführen".
2. Schritt - Installation
Es gibt nun ein Textfeld, in dem "C:\" steht, dort kann man einstellen wo XAMPP installiert werden soll.
Ich empfehle es auf C:\ zu installieren. Klicke anschließend auf "Install".
Wenn die Installation abgeschlossen ist, erscheint ein DOS-Fenster.
3. Schritt - Konfiguration
3.1 In dem DOS-Fenster wird als erstes gefragt, ob ein ShortCut Icon auf dem Desktop erstellt werden soll.
Falls ja, einfach auf "y" drücken und Enter drücken.
Falls nicht, einfach anstatt eines "y"s ein "n" eingeben und die Entertaste drücken.
3.2 Die nächste Frage möchte wissen, ob XAMPP jetzt konfiguriert werden soll oder nicht.
Falls ja, einfach auf "y" drücken und Enter drücken.
Falls nicht, einfach anstatt eines "y" ein "n" eingeben und die Entertaste drücken.
3.3 Wenn XAMPP lokal installiert werden soll, dann drücke bitte "n" und Enter.
Wenn XAMPP allerdings auf einer Festplatte oder einem USB-Stick installiert werden soll, muss "y" gewählt werden.
3.4 Drücke nun einmal Enter und die entsprechende Zahl, um die aufgelisteten Dinge auszuführen.
(Für Anfänger die "1" drücken, Enter und dann "x" und Enter.)
Das XAMPP Control Panel zeigt viele Buttons. Das wird aber kein Problem sein!
Klicke, falls rechts neben "Apache"
kein Running steht, auf den Button "Start" in derselben Zeile.
Als nächstes klicke, falls rechts neben "MySQL"
kein Running steht, auf den Button "Start" in derselben Zeile.
So, nun sind die ersteinmal wichtigsten Prozesse gestartet und jetzt klicke bitte auf diesen Link:
http://localhost/security/xamppsecurity.php.
Dort denkst Du Dir zunächst ein Passwort für den Hauptbenutzer von der Datenbank aus. Dabei beachte, dass die Option "cookie" als Authentifikation ausgewählt ist.
Wichtig ist auch, dass
kein Häkchen bei "Passwort in Klartext speichern" gesetzt ist!
Der Rest
bleibt so!
Nun lösche auch alle Dateien und Ordner, die sich im Ordner "htdocs" befinden. Aber
nicht den Ordner löschen, nur den Inhalt!
Wir fangen nundenn richtig an! Jetzt lernst Du PHP!
Es geht ersteinmal los mit dem Erstellen einer
index.php . Sie ist die Seite, die zuerst aufgerufen werden soll, wenn
localhost aufgerufen wird.
1. Schritt - Der Editor
Drücke folgende Tasten-Kombi: "Windowstaste" und "R" gleichzeitig. Es erscheint das Fenster "Ausführen".
Schreibe in das Textfeld im Fenster "notepad" rein und bestätige mit der Entertaste. Nun öffnet sich ein Fenster, der Editor!
2. Schritt - index Datei erzeugen
Die Datei ist noch leer und wird nun per "Speichern unter" unter "C:\
*xampp\htdocs\" als
index.php gespeichert.
WICHTIG! Die Endung
.php darf nicht vergessen werden!
* je nach Speicherplatz variierend. Siehe angegeben Pfad der XAMPP Installation. (z.B. C:\ oder D:\ oder externes Gerät)
3. Schritt - Eine Ausgabe erzeugen (Hello World)
Sehr gut! Nun musst Du folgenden Code in die
index.php schreiben:
PHP-Code: index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>www.superflyger.com - Super Tutorials!</title>
</head>
<body>
<?php
echo
'
Hello World
';
?>
</body>
</html>
Drücke nun die Tastenkombi: "Strg" + "S" gleichzeitig.
Perfekt! Nun gehe auf diesen Link, damit Du siehst, was Du geschafft hast:
localhost.
Jetzt kannst Du ersteinmal anfangen etwas herumzuexperimentieren. Schau zum Beispiel was passiert, wenn Du nur "eco" schreibst oder wenn Du ein ' weglassen würdest.
Variablen, ganz klar, kennt man aus Mathe :^] Aber das sind andere Variablen.
In PHP gibt es Variablen, die alles enthalten können und die mit sich selbst arbeiten lassen, um neue Variablen zu erzeugen.
Variablen in PHP fangen mit einem Dollar Zeichen an ($) und werden
String genannt. Zum Beispiel $string.
Fangen wir mit einem einfachen Code an:
PHP-Code: index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>www.superflyger.com - Super Tutorials!</title>
</head>
<body>
<?php
$string = "hallo";
echo $string;
?>
</body>
</html>
Hast Du das in Deine
index.php geschrieben, ruf sie nocheinmal über localhost auf oder aktualisiere, falls das Fenster noch geöffnet ist.
Es sollte jediglich ein "hallo" ausgegeben werden. Jetzt kannst Du wieder experimentieren,
was passiert wenn Du das $-Zeichen entfernst oder wenn Du statt "hallo" etwas anderes in den String schreibst?!
Immer wieder zu gebrauchen und ziemlich hilfreich sind Bedingungen und entsprechende Reaktionen darauf.
Zum Beispiel kann geprüft werden, ob 2 + 2 = 4.
Hier das Code-Beispiel:
PHP-Code: index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>www.superflyger.com - Super Tutorials!</title>
</head>
<body>
<?php
if(2 + 2 == 4)
{
echo
'
Die Rechnung ist korrekt!
';
}
else
{
echo
'
Die Rechnung ist falsch!
';
}
?>
</body>
</html>
Hier ist wichtig, dass bei der Bedingung zum
Vergleich ein
== geschrieben wird und
kein einfaches Gleichzeichen!
Ist der Code gespeichert rufe den localhost auf und schau Dir an, was ausgegeben wird. Es sollte folgendes stehen: "Die Rechnung ist korrekt!".
Ist alles so wie geplant, kannst Du mal sehen, was ausgegeben wird, wenn Du anstelle der 4 einfach eine 5 eingibst.
Es kann auch einfach eine weitere Bedingung gesetzt werden, zum Beispiel 2 Rechnungen:
PHP-Code: index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>www.superflyger.com - Super Tutorials!</title>
</head>
<body>
<?php
if(3 + 2 == 4)
{
echo
'
Die Rechnung ist korrekt!
';
}
elseif(3 + 2 == 5)
{
echo
'
Die Rechnung ist falsch, aber die zweite ist richtig!
';
}
else
{
echo
'
Die Rechnung ist falsch und die zweite auch!
';
}
?>
</body>
</html>
Hier sollte dann "Die Rechnung ist falsch, aber die zweite ist richtig!" ausgegeben werden.
Es gibt 4 Parameter, zum Beispiel GET-Parameter, POST-Parameter, COOKIE-Parameter und SESSION-Parameter.
2.4.1 GET-Parameter
GET ist, wie der Name schon sagt, ein Parameter, der über die URL Stringinhalte
bekommt. GET-Parameter werden mit $_GET[] ausgelesen.
Steht zum Beispiel in der URL-Leiste
index.php?abc=hallo&xyz=duda, kann man die Werte von abc und xyz so auslesen und auch ausgeben:
PHP-Code: index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>www.superflyger.com - Super Tutorials!</title>
</head>
<body>
<?php
$abc = $_GET['abc'];
$xyz = $_GET['xyz'];
echo 'abc enthält den Wert '.$abc.' und xyz den Wert '.$xyz;
?>
</body>
</html>
Du fragst Dich wahrscheinlich was dieses '.$abc.' zu bedeuten hat?! Das ist eigentlich ganz einfach,
so kann ich Variablen in eine Ausgabe stecken, ohne dass nachher statt dem Inhalt der Variable einfach "$abc" ausgegeben wird.
Mit dem '. wird also wieder in php eingeleitet und mit dem .' wieder in die Ausgabe.
In diesem Beispiel wird also ausgegeben, dass "abc" den Wert "hallo" enthält und "xyz" den Wert "duda" enthält.
Bitte achte darauf, dass GET-Parameter nur erkannt werden können wenn nach dem Dateinamen ein ? steht.
Dieses ? zeigt, dass nun Parameter Werte kommen, die mit einem &-Zeichen voneinander getrennt werden.
Jetzt bist Du wieder dran. Wechsel doch einfach mal die Inhalte der Parameter aus, z.B. abc=test oder xyz=wasweißich.
2.4.2 POST-Parameter
Mit POST wird ein Parameter
verschickt. Soetwas ist zum Beispiel für einen Login (dazu kommen wir später noch ;))
sehr praktisch, da man dort ja verhindern will, dass in der URL-Leiste dann einfach das Passwort zu sehen ist.
POST-Parameter werden mit $_POST[] ausgelesen. Hier das Beispiel:
PHP-Code: index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>www.superflyger.com - Super Tutorials!</title>
</head>
<body>
<?php
$abc = $_POST['abc'];
$xyz = $_POST['xyz'];
echo 'abc enthält den Wert '.$abc.' und xyz den Wert '.$xyz;
?>
</body>
</html>
Diesmal kannst Du erstmal nicht herumexperimentieren, da wir ein Formular brauchen, das die Daten per
post verschickt.
Nachdem wir uns mit dem COOKIE-Parameter beschäftigt haben werden, wirst Du Dein wahrscheinlich erstes Formular bauen :).
2.4.3 COOKIE-Parameter
Ersteinmal: Es geht hier nicht um einen Keks :^] Es geht hier um ein Cookie; das ist eine Speicherung von bestimmten Daten in dem
Browser. Zum Beispiel kann man damit eine Spracheinstellung speichern, sodass die Person, wenn sie beim nächsten Mal
auf die Seite geht, diese auch in der richtigen Sprache angezeigt bekommt. Ein COOKIE-Parameter wird mit $_COOKIE[] ausgelesen.
Dann beginnen wir einfach mal mit dem Beispiel der Spracherkennung. Versuch doch erstmal eine if-Bedingung zu schaffen, in der
die Variable
$lang einmal DE enthält und einmal EN enthält und die dazu entsprechende Sprache ausgegeben wird.
Solltest Du es nicht schaffen klicke bitte
hier.
Ok, schade! (
Schließen)
PHP-Code: index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>www.superflyger.com - Super Tutorials!</title>
</head>
<body>
<?php
$lang = $_COOKIE['lang'];
if($lang == "DE")
{
echo
'
Willkommen auf der Seite!
';
}
elseif($lang == "EN")
{
echo
'
Welcome on the page!
';
}
?>
</body>
</html>
So, ist das erstmal geschafft, wird, wenn Du die Seite aufrufst, nichts erscheinen.
Jetzt legen wir eine neue Datei namens
cookie.php an. Verfahre bitte so, wie Du es mit der
index.php getan hast.
Um ein Cookie zu setzen bedarf es
setcookie(), eine von vielen Funktionen, die php so vielfältig macht.
Hier der Code:
PHP-Code: cookie.php
<?php
setcookie("lang","DE");
header('Location: index.php');
?>
Nun ruf die Datei
cookie.php über localhost auf,
nicht über den Arbeitsplatz!
header() bewirkt, dass
sofort auf eine weitere Seite weitergeleitet wird. Das erfolgt nachdem das Cookie gesetzt ist, da wir vor dem
header() die
setcookie() Funktion aufgerufen haben.
Da zur
index.php weitergeleitet wird, wird dort nun die Abfrage stattfinden und entsprechend, da wir DE in da Cookie geschrieben haben,
ein deutscher Text ausgegeben. Hätten wir in dem
setcookie()-Teil allerdings anstelle von DE ein EN angegeben, so würde die
index.php einen englischen Text ausgeben. Das Cookie, das wir gesetzt haben ist unendlich haltbar. Man kann es aber mit Browserfunktionen
wieder löschen.
Üblich wird ein Cookie mit folgendem Code gelöscht:
PHP-Code:
<?php
setcookie("lang","",time()-10);
?>
Die -10 zeigt dem Cookie, dass es schon 10 Sekunden in der Vergangenheit abgelaufen ist und sobald ein Cookie abläuft, ist es gelöscht.
Hätten wir bei dem
setcookie() von der
cookie.php noch ein Komma und
time() + 3600 in die Klammer gesetzt,
so würde das Cookie 3600 Sekunden lang halten (entspricht einer Stunde).
2.4.4 SESSION-Parameter
Session-Parameter werden
nur in Sessions benutzt. Bedingung ist, um eine Session-Variable in anderen Scripten weiterverwendet werden kann, dass eine
Session gestartet wurde.
Das funktioniert mit
session_start(). Dazu später mehr! Eine Session-Variable kann so aussehen: $_SESSION['username'].
In einer Session können Daten mit Session-Parametern ausgelesen werden, solange die Session noch aktiv ist.
Nicht in etwa Dokumente, nein, es sind Formulare. Sie beginnen mit
<form> und enden mit
</form>.
Beim Öffnen eines Formulars (<form>) müssen allerdings noch Attribute angegeben werden, wie zum Beispiel
Auf welche Seite werden die Daten weitergeleitet?,
Welche Methode? GET oder POST? und
Soll das Formular
an einen Frame geschickt werden?. Für diese 3 Fälle gibt es die Attribute
action="",
method=""
und
target="".
Fangen wir mit einem normalen POST-Formular an, das einfach einen Text an die
index.php schicken soll, wodurch die
index.php erkennen soll, ob der Inhalt des geschickten leer ist und wenn nicht, den Inhalt ausgibt.
Das machen wir mit der
formular.html (
WICHTIG! Endung beachten ! .html!).
Hier der Code für die
formular.html:
HTML-Code: formular.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Erstes Formular</title>
</head>
<body>
<form action="index.php" method="post" target="_self">
Hier iwas eingeben: <input type="text" name="daten" value="" /> <input type="submit" value="Senden" />
</form>
</body>
</html>
Jetzt noch die entsprechende Abfrage in der
index.php:
PHP-Code: index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>www.superflyger.com - Super Tutorials!</title>
</head>
<body>
<?php
$daten = $_POST['daten'];
if(!empty($daten))
{
echo
'
Du hast folgendes eingegeben: '.$daten;
}
else
{
echo
'
Tut mir leid, aber es wurde nichts eingegeben!
';
}
?>
</body>
</html>
Gehst Du nun direkt auf die
index.php, wird einfach nur ausgegeben, dass nichts eingegeben wurde.
Deshalb geh nun auf dein
formular.html.
Wenn Du dort etwas in das Textfeld eingibst und auf "Senden" klickst, wirst Du sehen, dass Deine eingegebenen Daten ausgegeben werden können.
Soo, mit Deinem jetzigen Wissen solltest Du im Stande sein, einen eigenen Login zu erstellen.
Das schafft man, indem man einmal die
login.html und die
login.php anlegt.
Die login.html sollte die Eingabe-Felder "Username" und "Passwort" enthalten, sowie ein
Formular mit dem Username und Passwort verschickt werden.
Für solche Sachen eignet sich eine Tabelle immer ganz gut.
HTML-Code: login.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Login (nur Autorisation)</title>
</head>
<body>
<form action="login.php" method="post" target="_self">
<table align="center" style="border: 1px solid #000000;">
<tr>
<td width="120">Username:</td>
<td width="120" align="right"><input type="text" name="username" value="" /></td>
</tr>
<tr>
<td width="120">Passwort:</td>
<td width="120" align="right"><input type="password" name="passwort" value="" /></td>
</tr>
<tr>
<td width="240" colspan="2" align="right"><input type="submit" value="Login" /></td>
</tr>
</table>
</form>
</body>
</html>
Wichtig hierbei ist selbstverständlich, dass die Daten per POST gesendet werden, da sonst Leute sehen könnten, was in der
Adressleiste steht. Etwas zusätzliches aber nicht erforderliches ist der Rahmen, der im
style-Attribut angegeben ist.
Das ganze sollte nun in etwa so aussehen:
Jetzt kommt der viel wichtigere Teil - Die Überprüfung der gesendeten Daten!
Die
login.php sollte so aussehen:
PHP-Code: login.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>www.superflyger.com - Super Tutorials!</title>
</head>
<body>
<?php
$user = "Admin"; // Hier wird der gültige Benutzername eingegeben!
$pass = "geheim"; // Hier wird das gültige Passwort eingegeben!
$username = $_POST['username'];
$passwort = $_POST['passwort'];
if($username == $user && $passwort == $pass)
{
echo
'
Die Login-Daten waren korrekt! Willkommen auf der geschützten Seite!
';
}
else
{
echo
'
Die Login-Daten waren falsch! Die geschützte Seite wird nicht angezeigt!
';
}
?>
</body>
</html>
Als nächstes befassen wir uns damit, einem Benutzer die Möglichkeit zu bieten, mehrere geschützte
Seiten einsehen zu können wenn er sich eingeloggt hat.
Du solltest nun in der Lage sein, aus dem Login mit einer einmaligen Autorisation und dem Setzen eines Cookies
mehrere geschützte Seiten zu kreieren, die nur bei einem bestimmt gesetzten Cookie angezeigt werden.
Hast Du es nicht geschafft, oder solltest Du keine Lust haben :^], dann klicke
hier.
Ok, schade! (
Schließen)
Die login.html ist die gleiche wie die vom login.html bei der einfachen Autorisation.
Die login.php wird allerdings etwas abgewandelt, in ihr ist nun nicht mehr nur einfach ein Text
auszugeben, ob irgendwas geklappt oder nicht geklappt hat, sondern es muss ein Cookie gesetzt werden.
Hier der passende Code:
PHP-Code: login.php
<?php
$user = "Admin"; // Hier wird der gültige Benutzername eingegeben!
$pass = "geheim"; // Hier wird das gültige Passwort eingegeben!
$username = $_POST['username'];
$passwort = $_POST['passwort'];
if($username == $user && $passwort == $pass)
{
setcookie("login","true");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>www.superflyger.com - Super Tutorials!</title>
</head>
<body>
<?php
if($username == $user && $passwort == $pass)
{
echo
'
Die Login-Daten waren korrekt! Sie werden nun zu der geschützten Seite weitergeleitet!
';
}
else
{
echo
'
Die Login-Daten waren falsch! Versuchen Sie es erneut.
';
}
?>
</body>
</html>
Wichtig! Man beachte, dass
setcookie VOR irgendeiner Ausgabe kommt!
setcookie() ist eine Header-Information!! Desweiteren ist hier wichtig, dass wir keine Ablaufzeit
deklariert haben, was bedeutet, dass das Cookie nur durch Löschung des Benutzers oder durch ein
setcookie() in der Vergangenheit gelöscht werden kann.
Jetzt haben wir schon einiges gelernt, um einen tollen Login zu erstellen.
Aber was gehört zu einem guten Login? Richtig, ein Logout. Ein Logout wird benötigt,
um den Zustand des Eingeloggt-seins wieder in den Ursprungszustand zurückzuführen.
Das heißt also, dass man sich nach einem Login immer ausloggen sollte, um zu vermeiden,
dass jemand anderes an den Account oder das Profil rankommt. Nach einem Logout muss man sich
wieder einloggen, damit man seine Daten bearbeiten kann oder an im ausgeloggten Zustand nicht
sichtbare Daten kommt.
Copyright Wolf-Jörgen Stange ©