Frage

Wenn ich eine Seite getroffen, die session_start() aufruft. Wie lange würde ich warten, so dass, wenn ich die Seite zu aktualisieren war, habe ich eine neue Sitzungs-ID ausgegeben wurde?

War es hilfreich?

Lösung

Überprüfen Sie heraus php.ini den Wert für session.gc_maxlifetime in Sekunden die ID-Lebensdauer ist.

Ich glaube, dass der Standardwert ist 1440 Sekunden (24 Minuten)

http://www.php.net/manual/en/session. configuration.php

Edit: Wie einige Bemerkungen darauf hin, über das ist nicht ganz korrekt. Eine wunderbare Erklärung, warum und wie Sitzung Lebensdauern zu implementieren ist hier verfügbar:

Wie verfallen ich eine PHP-Session nach 30 Minuten?

Andere Tipps

Der Standard in der php.ini für die session.gc_maxlifetime Richtlinie (die "gc" für die Garbage Collection ist) ist 1440 Sekunden oder 24 Minuten. Siehe die Session Runtime Configuation Seite im Handbuch:

http://www.php.net/manual/en/session. configuration.php

Sie können diese Konstante Änderung in der php.ini oder .httpd.conf Dateien, wenn Sie Zugang zu ihnen haben, oder in der lokalen .htaccess-Datei auf Ihrer Website. Um das Timeout auf eine Stunde eingestellt, die .htaccess-Methode verwenden, fügen Sie diese Zeile in die .htaccess-Datei im Stammverzeichnis der Website:

php_value session.gc_maxlifetime "3600"

Seien Sie vorsichtig, wenn Sie auf einem gemeinsamen Host sind, oder wenn Sie mehr als eine Website hosten, wo Sie den Standard nicht geändert haben. Die Standard-Sitzungs Lage ist das Verzeichnis / tmp und die Garbage Collection-Routine wird alle 24 Minuten für diese anderen Websites führen (und auszulöschen Ihre Sitzungen in den Prozess, unabhängig davon, wie lange sie sollte gehalten werden) . Sehen Sie sich die beachten auf der Hilfeseite oder diese Seite für eine bessere Erklärung.

Die Antwort auf diese ist Ihre Sitzungen in ein anderes Verzeichnis verschieben mit session.save_path. Dies hilft auch Bösewichte zu verhindern, dass Ihre Besucher Sitzungen aus dem Standard-Verzeichnis / tmp Hijacking.

Nach einem Benutzer auf PHP.net Website, seine Bemühungen Sitzung am leben gescheitert zu halten, so mußte er eine Abhilfe machen.

<?php

$Lifetime = 3600;
$separator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\\" : "/";

$DirectoryPath = dirname(__FILE__) . "{$separator}SessionData";
//in Wamp for Windows the result for $DirectoryPath
//would be C:\wamp\www\your_site\SessionData

is_dir($DirectoryPath) or mkdir($DirectoryPath, 0777);

if (ini_get("session.use_trans_sid") == true) {
    ini_set("url_rewriter.tags", "");
    ini_set("session.use_trans_sid", false);

}

ini_set("session.gc_maxlifetime", $Lifetime);
ini_set("session.gc_divisor", "1");
ini_set("session.gc_probability", "1");
ini_set("session.cookie_lifetime", "0");
ini_set("session.save_path", $DirectoryPath);
session_start();

?>

In Session Ordnern wird es Textdateien zum Halten Sitzungsinformationen gespeichert wird, würde jede Datei sein, einen ähnlichen Namen wie „sess_a_big_hash_here“.

es hängt von Ihren PHP-Einstellungen ...
verwenden phpinfo() und einen Blick auf die Sitzung Kapitel nehmen. Es gibt Werte wie session.gc_maxlifetime und session.cache_expire und session.cookie_lifetime, die die Sitzungen Lebensdauer auswirkt

EDIT: es ist wie Martin schreibt vor

Aber achten Sie auf den meisten xampp / AMPP /...- Setups und einigen Linux destributions es 0 ist, was bedeutet, dass die Datei wird nie gelöscht werden, bis Sie es in Ihrem Skript zu tun (oder schmutzig über Shell)

PHP.INI:

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 0

Sie können auch so etwas wie ini_set('session.gc_maxlifetime', 28800); // 8 * 60 * 60 verwenden.

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