25.01.22 1225 Views 4

credit: ©I Viewfinder

PHP Tutorial #33

PHP Sessions

Erst mit Sessions wird es möglich, Zustände über mehrere PHP-Seiten hinweg abzurufen. Dies geschieht, indem die entsprechenden Informationen in sogenannten Session-Variablen gespeichert werden. Wie genau das abläuft, zeigen wir dir hier!

Falconbyte unterstüzen

Betrieb und Pflege von Falconbyte brauchen viel Zeit und Geld. Um dir auch weiterhin hochwertigen Content anbieten zu können, kannst du uns sehr gerne mit einem kleinen "Trinkgeld" unterstützen.

Schnelles Code-Beispiel

// Session starten
session_start();

// Eine Session Variable setzen
$_SESSION["counter"] = 0;

    Inhaltsverzeichnis

  1. Was ist eine PHP Session?
  2. Session erstellen
  3. Session beenden

Was ist eine PHP Session?

HTTP ist ein zustandsloses Protokoll. Das bedeutet, dass der Zustand einer einzelnen (PHP-)Seite nicht gespeichert wird. Das Protokoll hat also immer nur die Informationen zu der aktuellen Seite, die gerade offen ist und "vergisst" sie beim Schließen wieder bzw. kennt sie nicht auf anderen Seiten.

Erst mit Sessions wird es möglich, Zustände über mehrere PHP-Seiten hinweg abzurufen. Dies geschieht, indem die entsprechenden Informationen in sogenannten Session-Variablen gespeichert werden. Die in den Session-Variablen gespeicherten Informationen sind seitenunabhängig und von der ganzen PHP-Applikation aus abrufbar.

Erst so wird es beispielsweise möglich, Informationen wie etwa Anmeldedaten von Usern, Einstellungen etc. zu speichern und von der gesamten PHP-Applikation aus zugreifbar zu machen.

  • Lebensdauer von Session-Variablen: Die Session hat solange Gültigkeit bis a) der Browser geschlossen wird oder b) eine gewisse Zeit vergangenen ist (z.B. 180 Minuten).

Wie funktioniert das?

Die meisten Sessions setzen einen User-Key auf dem Computer des Nutzers ab, der ungefähr so aussieht: 765487cf34ert8dede5a562e4f3a7e12. Wenn dann die Session auf einer anderen Seite geöffnet wird, sucht der Computer den User-Key. Hat er ihn gefunden, greift er auf diese Session zu, falls nicht, wird eine neue Session gestartet.

Session erstellen

Eine Session wird mit der Funktion session_start() gestartet.

Die einzelnen Session-Variablen werden jeweils als globale Variable $_SESSION gespeichert.

Erzeugen wir jetzt eine Seite namens demo1.php, starten darin eine Session und setzen zwei Session-Variablen:

<?php
// Session starten
session_start();
?>
<html>
<body>

<?php
// Session-variablen setzen
$_SESSION["username"] = "Bucky";
$_SESSION["farbe"] = "green";
echo "Session variables sind gesetzt.";
?>

</body>
</html>
  • Merke: Die Funktion session_start() muss die allererste Anweisung auf der PHP-Seite sein. Es darf kein HTML-Tag davor stehen.

Session-Variablen abfragen

Der Sinn einer Session besteht ja darin, dass die in den Session-Variablen gespeicherten Informationen von mehreren PHP-Seiten aufgerufen werden können.

Erzeugen wir also nun eine weitere PHP-Seite namens demo2.php. In dieser Datei wollen wir jetzt auf die Session-Variablen zugreifen, die in demo1.php erstellt wurden.

Wichtig ist, dass auch bei demo2.php die Funktion session_start() ganz oben im Dokument stehen muss:

<?php
session_start();

echo $_SESSION["username"] . "<br>"; // Bucky
echo $_SESSION["farbe"]; // green

Wert ändern

Der Wert einer Session-Variablen wird so geändert, wie man Variablen-Werte eben ändert, nämlich durch einfaches Überschreiben:

<?php
session_start();
$_SESSION["username"] = "Deadeye";

Existenz mit isset() prüfen

Es gehört zum guten Programmierstil und ist oftmals auch praktisch wirklich notwendig, zu checken, ob eine gewisse Session-Variable bereits exisitiert. Dies können wir mit der Funktion isset() überprüfen. Schau dir dazu einmal folgendes kleines Programm an:

<?php
// Session starten
session_start();
?>
<html>
<body>

<?php
// Set session variables
if(!isset($_SESSION["counter"])){
    $_SESSION["counter"] = 1;
}
else{
    $_SESSION["counter"]++;
}
echo "Zählerstand: " . $_SESSION["counter"];

?>

</body>
</html>

Das Programm prüft hier zunächst, ob die Session-Variable $_SESSION["counter"] bereits existiert. Falls nicht, wird sie gleich mal erstellt und mit dem Wert 1 initialisiert. Existiert sie dagegen schon, wird ihr Wert um +1 erhöht.

Nur durch die Prüfung der Exisitenz mit isset() können wir dieses Counter-Programm so einfach realisieren.

Session beenden

Eine PHP-Session kann mittels der Funktion session_destroy() komplett plattgemacht werden, d.h. dass alle Session-Variablen zerstört werden:

<?php
session_destroy();
?>

Um nur einzelne Session-Variablen zu zerstören, kannst du die Funktion unset() verwenden. Trage in den runden Klammern einfach die Session-Variable ein, die du loswerden willst:

<?php
unset($_SESSION['farbe']);
?>

Java lernen

text text

PHP Lernen

zur PHP

JavaScript lernen

move nove move

FALCONBYTE.NET

Handmade with 🖤️

© 2018-2023 Stefan E. Heller

Impressum | Datenschutz | Changelog

Falconbyte Youtube Falconbyte GitHub facebook programmieren lernen twitter programmieren lernen discord programmieren lernen