2011-05-20 2 views
2

je travaillais dans un projet où un autre développeur a écrit le code, alors qu'un utilisateur est connexion le session_start() comme d'habitude, puis il est cheking comme belows:scripts php déconnectent trop vite

if($a['userName'] == $username && $a['password'] == $pwd) 
{ 
       $_SESSION['id'] = $a['id'];   ?>  <script language="javascript"type="text/javascript">window.location="host.php";</script> }  else {  
$msg= "Invalid Username Password"; 
} 

Et quand un l'utilisateur veut utiliser le formulaire après quelques secondes sa déconnexion et l'utilisateur ne peut pas soumettre de données.

J'ai essayé augmentation de la durée de la durée de vie de la session:

$sessionCookieExpireTime=8*60*60; 
session_set_cookie_params($sessionCookieExpireTime); 

Et aussi essayé avec l'augmentation de durée de vie de session dans l'exécution comme ci-dessous:

ini_set('session.gc_maxlifetime', '3600'); 

Et enfin essayé en augmentant la durée de vie séance php.ini. Malheureusement, cela n'a pas fonctionné. Une chose que je devrais mentionner, il n'y a pas de session_destroy() pour les problèmes de déconnexion.

Merci d'avance.

Répondre

2

Sur quel type de serveur travaillez-vous?

Sur un serveur partagé qui exécute plusieurs sites utilisant un répertoire de session partagé, session.gc_maxlifetime est en fait la durée de vie la plus courte de tous les sites accédant à ce répertoire partagé.

Si le problème se situe sur un serveur de développement, recherchez l'emplacement des fichiers de session et examinez ce qui leur arrive.

Il est également possible que le répertoire dans lequel les sessions sont stockées ne soit pas accessible en écriture. Dans ce cas, la variable de session n'est jamais stockée en premier lieu.

Dans les trois cas: essayez de stocker les fichiers de session dans un répertoire différent. Dans le code, vous devez définir le répertoire de la session avec session_save_path() avant d'appeler session_start().

+1

qui est une machine de nuage et beaucoup d'autres projets de PHP sont hébergés là-bas, Ceux qui fonctionnent bien – mushfiq

0

Le délai d'expiration se produit lorsque l'utilisateur reste inactif pendant un certain temps. Il est impossible de se déconnecter automatiquement à moins d'utiliser session_destroy. Il est possible que votre code $ a ['id'];

renvoie null par hasard. En outre, vous devez vérifier quelle page est déconnectée. Il peut être facile d'identifier le problème en donnant le code complet.