7
votes

PHP - faire expirer une session après x minutes

J'utilise la technique suivante ...

à partir du login.php Le formulaire publier sur la page check.php où je fais cette xxx

et sur logbedin.php Page La première chose que je fais est xxx

mais une fois connecté Lorsque je saisi directement l'URL localhost \ myProject \ logbedin.php Il affiche la page ... ce qui est parfaitement logique car la session a commencé

ce que je veux mettre en œuvre est < / p>

  • L'URL directe \ Session fonctionne pendant 10 minutes après la fin de la session \ expiré \ expiré \ expiré, puis utilisez doit être à nouveau identifiant et peut obtenir le même identifiant de session mais après 10 minutes, l'utilisation ne pourra pas parcourir avec le même session

    Que dois-je faire ou apprendre


2 commentaires

Voir Comment expire une session PHP après 30 minutes?


Je sais que c'est une question très ancienne, mais c'est un résultat supérieur pour plusieurs recherches de session dans Google. Quiconque lisant ceci devrait savoir que le code de la question est extrêmement peu sûr et susceptible d'injection SQL. Nous ne voudrions pas que les débutants googling puissent récupérer de mauvaises habitudes. :-) Cette question sur SO devrait aider si vous voulez en savoir plus: Stackoverflow.com/Questtions/60174/...


3 Réponses :


1
votes

Je regarderais session_set_cookie_params et ini_set ("session.gc_maxlifetime", "18000");


2 commentaires

gc_maxlifetime est le collecteur des ordures et n'a rien à voir avec la durée de vie réelle des sessions. Juste quand il se déplace à la corbeille. Le session_set_cookie_params est correct, cependant.


Je sais que c'est un article très ancien, mais j'ai cliqué sur votre lien aujourd'hui le 1er avril et sa filature. Aie



10
votes

Stocker un horodatage dans la session: XXX PRE>

Vérifiez si l'horodatage est dans la fenêtre Heure autorisée (600 secondes est de 10 minutes): P>

<?php
session_start();
if( !isset( $_SESSION['user_id'] ) || time() - $_SESSION['login_time'] > 600)
{
    header("Location:login.php");
}
else
{
    // uncomment the next line to refresh the session, so it will expire after ten minutes of inactivity, and not 10 minutes after login
    //$_SESSION['login_time'] = time();
    echo ( "this session is ". $_SESSION['user_id'] );
    //show rest of the page and all
}
?>


4 commentaires

C'est juste qu'il y a > à la place de << / code>


Corrigée. Pour éviter la fixation de la session, vous voudrez peut-être ajouter session_regenèrent_id (false); session_destroy (); session_start (); après session_start ();


Cela sera-t-il 10 minutes d'aucune activité ou seulement 10 minutes? J'essaie d'utiliser cela pour les faire déconnecter si elles ne sont pas actives pendant 30 minutes, mais je ne sais pas comment ...


Cela expire après 10 minutes exactes après la connexion. Si vous souhaitez expirer la session après 10 minutes, lisez les commentaires dans le deuxième bloc de code et déplacez la ligne de droite.



1
votes

Utiliser la session Set Fonction de cookie dans votre fichier PHP où vous allez démarrer la session, il expirera après la définition de x minutes. XXX

Selon ci-dessus après 10 minutes après 10 minutes. < / p>


0 commentaires