Was passiert mit dem Array $ _SESSION, wenn ein PHP-Session-Timeout in der Mitte einer Anfrage?

StackOverflow https://stackoverflow.com/questions/1002935

  •  05-07-2019
  •  | 
  •  

Frage

ich immer gefragt habe, wenn ein PHP-Session-Timeout in der Mitte ein Skript ausgeführt wird, wird der Inhalt des $ _SESSION Array noch verfügbar sein, bis die Ausführung des Skripts beendet? Zum Beispiel:

session_start();

if(! isset($_SESSION['name'])) {
    echo 'Name is not set';
    exit;
}

// imagine there is a bunch of code here and that the session times out while
// this code is being executed

echo 'Name is ', $_SESSION['name']; // will this line throw an error?

Ist es praktisch Session-Variablen auf dem lokalen Bereich zu kopieren, damit ich sie später im Skript lesen kann, ohne für eine Sitzung Auszeit Kontrolle halten zu müssen? So etwas wie:

session_start();

if(isset($_SESSION['name'])) {
    $name = $_SESSION['name'];
} else {
    echo 'Name is not set';
    exit;
}

// bunch of code here

echo 'Name is ', $name;
War es hilfreich?

Lösung

keine Sorge über solche Dinge. Nichts wird in die Sitzung geschehen. Es wird initialisiert durch sessioni_start() und $_SESSION wird in Ihrem Skript immer verfügbar sein.

Andere Tipps

Die Standard-Drei-Stunden-Sitzung Lebensdauer jedes Mal, wenn Sie die Sitzung geöffnet wird zurückgesetzt (siehe session_cache_expire ), so dass der einzige Weg, eine Sitzung in der Mitte einer Anforderung Zeitüberschreitung könnte, ist, wenn eine Anfrage zu bearbeiten 3 Stunden dauert. Standardmäßig nach PHP fordert eine Auszeit nur 30 Sekunden, so dass es keine Gefahr der Sitzung Ablauf während einer Anfrage. Darüber hinaus wird die $_SESSION Variable nicht plötzlich in der Mitte einer Anfrage ändern. Es wird aufgefüllt, wenn die Sitzung beginnt, und das ist es.

Die Variablen kopiert werden in den $ _SESSION global bei der Anfrage, so dass es die gleiche Wirkung wie das Kopieren von ihm auf eine lokale Variable hat.

jedoch aus Gründen der Klarheit willen, macht es Sinn, sie in einer lokalen Variable zu kopieren. Vor allem, wenn Sie die Variable mehrmals verwenden möchten. Es kann schwierig sein, den Code zu lesen, die $ _SESSION [ ‚variable‘] der ganzen Platz hat.

Was man braucht, zu verstehen ist, wie Sitzungen arbeiten. Ein Client ein Skript Zugriff auf ein $ _SESSION Super global mit kennt nur den Schlüssel für die Sitzung, die ihnen gehört (Stored Cookie / URL). Das bedeutet, die Sitzungsdaten selbst nichts mit dem Kunden zu tun hat. Wenn Sie den Schlüssel für die Sitzungsdaten haben Sie verwenden möchten, dann können Sie es verwenden. Ältere Versionen von PHP hatte einige Sicherheitslücken, weil Sitzungen, in denen irgendwo gespeichert, die leicht zugänglich war (I Details nicht erinnern).

Grundsätzlich, wenn Sie den Session-ID in einem PHP-Skript haben Sie den Zugriff auf diese Sitzung haben, wenn der Speicher auf der Maschine gespült wird / Festplatte beschädigt ist (dh Computer-Neustart / Device Failure).

Hope, das hilft, sonst gehen zu php.net und tauchen Sie ein in die Details, wie Sitzungen arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top