Sitzungs-Timeout in PHP festlegen

Subodh Poudel 30 Januar 2023
  1. Verwenden Sie die Funktionen session_unset() und session_destroy(), um das Session-Timeout in PHP einzustellen
  2. Verwenden Sie die Funktion unset(), um das Session-Timeout in PHP zu setzen
  3. Verwenden Sie die Funktion session_regenerate_id(), um die aktuelle Sitzungs-ID in PHP zu ändern
Sitzungs-Timeout in PHP festlegen

Dieser Artikel stellt eine Methode vor, um die Sitzung in PHP mit den Funktionen session_unset() und session_destroy() zu zerstören. Wir werden die Sitzung nach 30 Minuten zerstören. Es überprüft das Zeitintervall von der letzten Aktivität bis zur aktuellen Zeit, um die Sitzung zu zerstören.

Wir zeigen auch eine andere Möglichkeit, das Session-Timeout in PHP mit der Funktion unset() zu setzen. Die Funktion unset() nimmt als Parameter die Sitzungsvariable. Diese Methode verwendet ein Array, um die Sitzungsvariable zu speichern.

Wir werden eine weitere Methode einführen, um die aktuelle Sitzungs-ID mit der Funktion session_regenerate_id() ungültig zu machen. Diese Funktion generiert eine neue Sitzungs-ID für die aktuelle Sitzung, wobei die vorherige Sitzungs-ID zerstört wird.

Verwenden Sie die Funktionen session_unset() und session_destroy(), um das Session-Timeout in PHP einzustellen

Mit der Funktion session_unset() können wir die Variable $_SESSION zur Laufzeit aufheben und mit der Funktion session_destroy() die Sitzung aus dem Speicher löschen. Die Funktion time() gibt die aktuelle Uhrzeit zurück. Wir können die Variable $_SESSION verwenden, um den Zeitstempel der letzten Aktivität zu speichern. So können wir die Zeit überprüfen, indem wir die Differenzen von der letzten Aktivität zur aktuellen Zeit berechnen. Auf diese Weise überprüfen wir das Zeitintervall einer Sitzung.

Starten Sie beispielsweise die Sitzung im Server mit der Funktion session_start(). Prüfen Sie, ob die Sitzung mit der Funktion isset() erstellt wurde. Verwenden Sie den Operator &&, um die andere Bedingung innerhalb der Funktion issset() zu überprüfen. Ziehen Sie die Sitzungsvariable start von der Funktion time() ab und überprüfen Sie das Ergebnis, ob es grösser als 1800 ist. Verwenden Sie session_unset() und session_destroy() innerhalb der if-Bedingung. Zeigen Sie dann die Meldung an, dass die Sitzung zerstört wurde. Erstellen Sie ausserhalb der Bedingung if eine Sitzungsvariable $_SESSION['start'] und weisen Sie ihr die Funktion time() zu, um die Sitzung zu aktualisieren.

Die Bedingung if schlägt fehl, da die Sitzungsvariable im folgenden Beispiel noch nicht erstellt wurde. Die Sitzung wird erstellt, wenn die Bedingung fehlschlägt. Die Sitzung läuft nach 30 Minuten ab, wenn der Benutzer die Anfrage nicht an den Server sendet. Der letzte Teil der Funktion isset() überprüft die gesamte aktive Zeit der Sitzung. 1800 bezeichnet 1800 Sekunden, was 30 Minuten entspricht. Wenn die gesamte aktive Zeit 30 Minuten überschreitet, ist die if-Bedingung wahr. Dann zerstört es die Sitzung. Die Ausgabe des Codes entspricht der Zerstörung der Sitzung nach mehr als 30 Minuten der aktiven Zeit. Lesen Sie das PHP-Handbuch , um mehr über die Funktion session_unset() zu erfahren.

Beispielcode:

# php 7.*
<?php
session_start();
if (isset($_SESSION['start']) && (time() - $_SESSION['start'] > 1800)) {
    session_unset(); 
    session_destroy(); 
    echo "session destroyed"; 
}
$_SESSION['start'] = time();
?>

Ausgabe:

session destroyed

Verwenden Sie die Funktion unset(), um das Session-Timeout in PHP zu setzen

Wir können die Funktion unset() verwenden, um die Sitzung einer bestimmten Sitzungsvariablen in PHP zu zerstören. Als Parameter nimmt die Funktion die Variable $_SESSION. Diese Methode speichert die Sitzung in einem Array. Wir können das assoziative Array verwenden, um den Sitzungsnamen und die Sitzungsstartzeit zu speichern. Wir können die Funktion time() verwenden, um die aktuelle Uhrzeit zu erhalten. Wir können das Sitzungszeitintervall nach der oben genannten Methode überprüfen, indem wir die aktive Sitzungszeit von der aktuellen Zeit subtrahieren.

Verwenden Sie beispielsweise die Funktion session_start(), um die Sitzung zu starten. Schreiben Sie eine Sitzungsvariable $_SESSION['start'] und weisen Sie ihr ein assoziatives Array zu. Schreiben Sie die Tasten 0 und registered und schreiben Sie die Werte active und time() für die jeweiligen Tasten. Prüfen Sie, ob das Zeitintervall größer als 30 Minuten ist. Wenn die Bedingung wahr ist, schreiben Sie die Funktion unset() mit dem Parameter $_SESSION['start']. Zeigen Sie dann die Meldung session destroyed an. Außerhalb des Bedingungsblocks if aktualisieren Sie die Sitzungsvariable $_SESSION['start'] mit der Funktion time().

Im folgenden Beispiel enthält das Array die Sitzungsvariable. Der Wert der Sitzungsvariablen ist active. Die Funktion time() erzeugt den aktuellen Zeitstempel im Array, der Schlüssel registered enthält den Wert. Bitte lesen Sie das PHP-Handbuch, um mehr über die superglobale Variable $_SESSION zu erfahren.

Beispielcode:

#php 7.x
<?php
session_start();
$_SESSION['start'] = array(0=> 'active', 'registered' => time())
if ((time() - $_SESSION['start']['registered']) > (60 * 30)) {
    unset($_SESSION['start']);
    echo "session destroyed";
}
$_SESSION['start'] = time();
?>

Ausgabe:

session destroyed

Verwenden Sie die Funktion session_regenerate_id(), um die aktuelle Sitzungs-ID in PHP zu ändern

Wir können die Funktion session_regenerate_id() verwenden, um die Sitzungs-ID der aktuellen Sitzung zu ändern. Auf diese Weise können wir verhindern, dass unser Skript die Sitzung fixiert. Der boolesche Wert true in der Funktion ermöglicht die Generierung einer neuen Session-ID. In dieser Methode können wir die Sitzungs-ID mit der Funktion session_id() vor und nach der Neugenerierung der Sitzungs-ID ausgeben. Aber die Session läuft nicht mit der Änderung der Session-ID ab. Es fordert den Benutzer lediglich auf, sich erneut anzumelden. Daher verhindert es die Sitzungsfixierung.

Starten Sie die Sitzung beispielsweise mit der Funktion session_id(). Zeigen Sie die aktuelle Sitzungs-ID mit der Funktion session_id() an. Prüfen Sie, ob die Sitzung erstellt wurde und erstellen Sie eine Sitzung $_SESSION['start'] und weisen Sie die Funktion time() zu. Finden Sie das Zeitintervall der aktiven Sitzung wie in der obigen Methode. Wenn die Bedingung wahr ist, verwenden Sie die Funktion session_regenerate_id(true). Aktualisieren Sie die Sitzungsvariable. Geben Sie am Ende des Skripts die neue Sitzungs-ID mit der Funktion session_id() aus.

Beispielcode:

#php 7.x
<?php
session_start();
print("Old: ".session_id());
echo "<br>";
if (!isset($_SESSION['start'])) {
    $_SESSION['start'] = time();
} else if (time() - $_SESSION['start'] > 1800) {
    session_regenerate_id(true); 
    $_SESSION['start'] = time(); 
}
print("Now: ".session_id());
?>

Ausgabe:

​Old: t38kssej37un38mtsoa6lovh05 
Now: mak7i3in708c6rl2udd8gbfo3r ​ ​
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Verwandter Artikel - PHP Session