Question

Si je frappe une page qui appelle session_start () . Combien de temps devrais-je attendre pour que, si je rafraîchis la page, un nouvel identifiant de session me soit attribué?

Était-ce utile?

La solution

Découvrez le fichier php.ini. La valeur définie pour session.gc_maxlifetime est la durée de vie de l'ID en secondes.

Je crois que la valeur par défaut est 1440 secondes (24 minutes)

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

Modifier: Comme le soulignent certains commentaires, ce qui précède n’est pas tout à fait exact. Une explication merveilleuse de pourquoi et comment mettre en œuvre des durées de session est disponible ici:

Comment faire pour expirer une session PHP après 30 minutes?

Autres conseils

La valeur par défaut dans le fichier php.ini pour la directive session.gc_maxlifetime (le "gc" correspond à un garbage collection) est de 1440 secondes ou 24 minutes. Voir la page de configuration de la session en cours dans le manuel:

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

Vous pouvez modifier cette constante dans les fichiers php.ini ou .httpd.conf si vous y avez accès, ou dans le fichier .htaccess local de votre site Web. Pour définir le délai d'attente sur une heure à l'aide de la méthode .htaccess, ajoutez cette ligne au fichier .htaccess situé dans le répertoire racine du site:

php_value session.gc_maxlifetime "3600"

Faites attention si vous êtes sur un hôte partagé ou si vous hébergez plus d'un site sur lequel vous n'avez pas changé le nom par défaut. L'emplacement de session par défaut est le répertoire / tmp, et la routine de récupération de place s'exécute toutes les 24 minutes pour ces autres sites (et efface vos sessions dans le processus, quelle que soit la durée pendant laquelle elles doivent être conservées). . Voir la note sur la page de manuel ou ce site pour une meilleure explication.

La solution consiste à déplacer vos sessions vers un autre répertoire à l'aide de session.save_path. Cela permet également d’empêcher les personnes mal intentionnées de détourner les sessions de vos visiteurs du répertoire par défaut / tmp.

Selon un utilisateur de PHP.net site, ses efforts pour maintenir la session en vie ont échoué, il a donc dû trouver une solution de contournement.

<?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();

?>

Dans le dossier SessionData, des fichiers texte contenant les informations de session seront stockés. Chaque fichier porte un nom similaire à "sess_a_big_hash_here".

Cela dépend de vos paramètres php ...
utilisez phpinfo () et consultez le chapitre de la session. Des valeurs telles que session.gc_maxlifetime et session.cache_expire et session.cookie_lifetime affectent la durée de vie des sessions

EDIT: c'est comme si Martin écrivait avant

Mais attention, dans la plupart des configurations xampp / ampp /...- et dans certaines distributions linux, la valeur est 0, ce qui signifie que le fichier ne sera jamais supprimé tant que vous ne l'utiliserez pas dans votre script (ou ne serez pas nettoyé via un 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

Vous pouvez utiliser quelque chose comme ini_set ('session.gc_maxlifetime', 28800); // 8 * 60 * 60 aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top