Prévenir la session a expiré en PHP Session pour l'utilisateur inactif
J'ai un problème avec mon application: mon application a de nombreuses formes et à besoin d'environ 1 heure pour terminer cette forme, car la forme est dynamique (possibilité d'ajouter d'autres formes). Le problème est: la session de mon serveur web est de 24 minutes. Lorsque l'utilisateur de remplir le formulaire, ils ont passé tellement de temps et la session a expiré parce que le serveur de reconnaître que l'utilisateur est inactif. C'est très gênant lors de la soumission du formulaire, la plupart des données ont été perdues et que l'utilisateur est renvoyé à la page de connexion. J'ai essayé de faire ma session a expiré en 10 heures avec ce code:
ini_set('session.gc_maxlifetime', '36000');
Mais cela ne fonctionne pas dans mon serveur, est-il possible que mon serveur de prévention ini_set()
fonction?
Alors, que dois-je faire pour résoudre ce problème? Puis-je prévenir l'expiration de la session, de sorte que la session peut être étendue à 10 heures? Ou puis-je désactiver la fin de la session?
Grâce
- Vous pouvez mettre en place votre propre système de session basé sur les cookies et les bases de données ou fichiers.
- Veuillez sélectionner l'une des réponses que la réponse à votre fil.
- oui, monsieur, j'ai mis en œuvre des cookies. donc, si la session a expiré, les cookies encore sauver les données de connexion, mais lorsque l'utilisateur soumet le formulaire, la page de redirection à partir de la page (la page où l'on regarde en premier lors de la connexion de succès). la redirection de l'itinéraire est
form page (when submit, session expired) -> login page (if cookies true) -> starting page
donc la perte de données - Je veux dire, ne pas utiliser $_SESSION (session_start) utiliser des cookies et d'enregistrer les variables dans la base de données ou de fichiers. Lors de la connexion de l'utilisateur créer un jeton et l'enregistrer dans le cookie et stocker vos variables basées sur ce jeton.
Vous devez vous connecter pour publier un commentaire.
Au lieu de mise à l'heure ini pour une longueur fixe, de rappeler que la temporisation est réinitialisée sur reload. Afin de créer un peu de code ajax qui ne demande toutes les 5 minutes pour un fichier (image ou qch). De cette façon, le compteur est remis à zéro toutes les 5 minutes et les utilisateurs peuvent passer une journée à remplir vos formulaires.
Ici un exemple pour éviter d'expiration de la session en utilisant un appel Ajax jQuery:
dans le refreshSession.php vous pouvez faire quelque chose comme session_start()
J'ai eu le même problème dans le passé. Ce que j'ai fait pour contourner ce problème est de placer ces deux fonctions dans un fichier de config qui est inclus dans chaque fichier.
et juste pour la sécurité de mesurer cette ligne dans mon .fichier htaccess
session.cookie_lifetime
= 200000;session.gc_maxlifetime
= 600000. Toutefois, cela ne l'aide pas et que les données est parfois perdu au moment de soumettre le formulaire. Toutes les pensées, s'il vous plaît?Changer session.gc_maxlifetime à l'aide de
ini_set
devrait fonctionner aussi longtemps que vous le modifiez l'option avant d'appelersession_start
. Ce faisant, la suivante devrait fonctionner:Vous pouvez également modifier l'option dans d'autres contextes (voir ChazUK réponse).
Mais je ne serait pas définir la durée de vie du cookie à une valeur fixe, mais faire de la session cookie d'un réel cookie de session qui dure jusqu'à ce que la session du navigateur est terminé (c'est à dire sur la fermeture du navigateur). Vous pouvez le faire en mettant session.cookie_lifetime à
0
.Ne considèrent également que PHP à la fin de la session modèle est un peu bizarre que la durée de vie de calcul est basé sur les données de la session de la date de dernière modification.
ini_set('session.gc_maxlifetime', 36000);
avantsession_start();
mais il ne fonctionne pas sur mon serveur. j'ignore de mon site web dans plus de 24 minutes, et quand je l'actualiser, il redirest à la page de connexion. est-il possible que mon serveur de prévention de la fonction ini_set ()? ou quoi? merci monsieurini_set('session.gc_maxlifetime', '36000');
et la fonction ini_set('session.gc_maxlifetime', 36000); monsieur ? voir le nombre de devis unique 🙂Combien de temps un cookie de session dure est activé lorsque vous créez le cookie de session. Si vous utilisez la fonction setcookie méthode, un argument de la méthode est la DURÉE pendant laquelle vous souhaitez que le cookie à la dernière.
Veuillez consulter le manuel PHP sur la méthode pour plus d'informations:
http://php.net/manual/en/function.setcookie.php