Layout

Lektion 6 - Sessions

Den etwas ausführlichen Teil über den eMail Versand hast du nun hinter dir, dann lass uns dein Wissen nun etwas festigen und um einige interessante Punkte erweitern.

In diesem Abschnitt des Kurses werden wir einige Beispiele durchgehen, die man mit PHP realisieren kann, wie z.B. Spiele, bei denen deine Mitglieder etwas gewinnen können. Damit du weißt, welchem deiner Mitglieder du etwas gut schreiben musst, werden wir nun eine einfache Loginfunktion erstellen.

6.1 Login mit Sessions

Sessions sind in PHP Arrays, wie es auch die bekannten GET und POST Variablen sind. Ist ihr Wert einmal gesetzt, bleibt er für den restlichen Besuch auf der Webseite gespeichert und muss nicht über die URL oder ein Formular weitergegeben werden. Damit wir wissen, was in dieser Variablen gespeichert werden soll, fragen wir den Besucher in einem Formular nach seinem Namen. Am besten fügst du die Abfrage gleich in das Menü deiner Webseite ein, also in die Seite index.php

// Die Seite index.php

echo "<form action='index.php?action=login' method='POST'>

    <input type='text' name='Name' size='20'><br>
    <input type='submit' value='Login'>

    </form>";

echo "<a href='index.php'>Startseite</a>";
echo "<a href='index.php?Seite=kontakt.php'>Kontakt</a>";

Im Form Tag wird der Variablen $_GET['action'] der Wert "login" zugewiesen. Auf diese Weise starten wir gleich eine Abfrage, dass die Login Funktion nur ausgeführt wird, wenn die Variable mit dem Wert auf der Seite existiert. Das ist ebenfalls die index.php, wie du hier sehen kannst.

 

6.2 Zuweisung des Wertes

Da der Quelltext einer Webseite von oben nach unten abgearbeitet wird, ist es ratsam, die Zuweisung vor dem Formular auszugeben, an dessen Stelle gleich der Name des Besuchers stehen soll. Am besten eignet sich dafür gleich die zweite Zeile deiner index.php.

<?php

session_start();

if ($_GET['action'] == "login") {

if ($_POST['Name'] != "") {

$_SESSION['Mitglied'] = $_POST['Name'];

}

}

// Hier beginnt dein HTML Grundgerüst

?>

Als erstes müssen wir der Webseite mitteilen, dass auf der Webseite mit Sessions gearbeitet wird, dies geht ganz einfach mit dem Befehl session_start(); Danach wird nun durch unsere Hilfszuweisung abgefragt, ob das Login Formular abgeschickt wurde. Darunter erfolgt eine if-Abfrage, ob in den Textfeld etwas drin stand, da man nur einloggen soll, wenn ein Name eingegeben wurde. Nun kommt die eigentliche Zuweisung: der Variablen $_SESSION['Mitglied'] wird der Wert zugewiesen, der im Eingabefeld deines Formulars stand.

 

6.3 Auslesen des Wertes

Dein Besucher ist nun bereits auf der Webseite eingeloggt, aber sehen kann er es noch nicht. Deshalb werden wir es ihm zeigen, indem nun an der Stelle des Formulars sein Name stehen soll. Unter seinem Namen geben wir ihm bereits die Möglichkeit, sich auszuloggen.

if (isset($_SESSION['Mitglied'])) {

echo "Hallo ".$_SESSION['Mitglied']."!<br>";
echo "<a href='index.php?action=logout'>Ausloggen</a>";

} else {

echo "<form action='index.php?action=login' method='POST'>

<input type='text' name='Name' size='20'><br>
<input type='submit' value='Login'>

</form>";

}

In einer if Abfrage wird mit if (isset($_SESSION['Mitglied'])) abgefragt, ob die Session existiert. Tut sie das, wird der Wert, der in der Variablen gespeichert ist, samt Begrüßung und Ausloggen Link ausgegeben, andernfalls wird das Formular angezeigt.

 

6.4 Logout

Wie vorhin beim Login Formular haben wir bereits in dem Logout Link der Variablen $_GET['action'] den Wert "logout" zugewiesen. Wenn man auf diesen Link klickt, soll nun die Variable $_SESSION['Mitglied'] gelöscht werden. Dies passiert am besten gleich unter deiner Login Abfrage.

<?php

session_start();

if ($_GET['action'] == "login") {

        // Login

}

if ($_GET['action'] == "logout") {

session_destroy();

}

// Hier beginnt dein HTML Grundgerüst

?>

Mit dem Befehl session_destroy(); werden alle Sessions zerstört, in unserem Falle also nur eine, und zwar $_SESSION['Mitglied']. Nun ist es allerdings so, dass dies erst nach einem Neuladen der Seite endgültig passiert. Dies kann man in einem HTML Meta Tag erzwingen.

echo "<title>PHP Kurs</title>";

if ($_GET['action'] == "logout") {
    echo "<meta http-equiv=refresh content='0 url=index.php'>";
}

echo "</head>";

Da der Quelltext von oben nach unten gelesen wird, wird oberhalb des HTML Grundgerüst die Session zerstört. Daraufhin gelangt die Seite in das Gerüst. Hier steht nun eine weitere Abfrage. Wenn $_GET['action'] den Wert "logout" hat, spricht: wenn man auf den Ausloggen Link geklickt hat, soll die Seite zur index.php weitergeleitet werden. Damit landet man nach einem Neuladen der Seite auf der Startseite.


hr

6.5 Übung

Baue dieses Login System in deine Kursseite ein.

« zurück Inhalt | Fragen       Kurs weiter »
Layout