session qui se détruit après un certain temps

session qui se détruit après un certain temps - PHP - Programmation

Marsh Posté le 04-10-2004 à 15:26:56    

Voilà, j'ai une appli en php qui utilise des session pour identifier les utilisateurs. Quand j'étais sous easyphp, même après qq jours, je n'étais pas déconnecté (sauf si j'avais explicitement demandé à détruire ma session).
 
Aussi, je voudrais que les utilisateurs puissent rester connectés à mon appli au moins 9 ou 10 heures, même s'ils ne font aucune manip sur l'appli, sachant que maintenant le serveur de mon appli une redhat. Je sais que c'est dans php.ini qu'il faut paramétrer ça, dans la rubrique session, mais quelle variable? session.gc_maxlifetime ou session.cache_expire ou une autre variable? Merci :)

Reply

Marsh Posté le 04-10-2004 à 15:26:56   

Reply

Marsh Posté le 04-10-2004 à 17:41:39    

rufo a écrit :

Voilà, j'ai une appli en php qui utilise des session pour identifier les utilisateurs. Quand j'étais sous easyphp, même après qq jours, je n'étais pas déconnecté (sauf si j'avais explicitement demandé à détruire ma session).
 
Aussi, je voudrais que les utilisateurs puissent rester connectés à mon appli au moins 9 ou 10 heures, même s'ils ne font aucune manip sur l'appli, sachant que maintenant le serveur de mon appli une redhat. Je sais que c'est dans php.ini qu'il faut paramétrer ça, dans la rubrique session, mais quelle variable? session.gc_maxlifetime ou session.cache_expire ou une autre variable? Merci :)


Si tu veux faire ça, à mon avis utilise les cookies.  
Avec les sessions c'est sans doute possible en modifiant le php.ini... regarde le php.ini de ton easyphp et compare le avec celui de ton serveur. Mais à mon avis si ton visiteur fermer son explorer ou se déconnecte ou rédméarre son pc, je sais pas si la session va tenir, à tester...
Jérémie :)

Reply

Marsh Posté le 04-10-2004 à 17:58:01    

session_set_cookie_params ($duree);
 
 
ça évite que le cookie contenant le sid ne soit détruit à la fermeture du navigateur ($duree = 0 => détruit quand on ferme)
 
:)

Reply

Marsh Posté le 05-10-2004 à 10:31:45    

jeremize a écrit :

Si tu veux faire ça, à mon avis utilise les cookies.  
Avec les sessions c'est sans doute possible en modifiant le php.ini... regarde le php.ini de ton easyphp et compare le avec celui de ton serveur. Mais à mon avis si ton visiteur fermer son explorer ou se déconnecte ou rédméarre son pc, je sais pas si la session va tenir, à tester...
Jérémie :)


 
si l'utilisateur ferme son navigateur, c'est normal qu'il perde sa session (c'est tant pis pour lui). Non, ce que je veux, c'est que tant qu'il laisse son navigateur ouvert il puisse resté connecté à mon appli même s'il ne fait rien... sinon, j'ai comparé mes 2 php.ini mais vu qu'il y en a un sous Linux et l'autre sous windows, j'ai des différences :(...

Reply

Marsh Posté le 05-10-2004 à 11:04:21    

Tu peux le faire juste pour le code de ton site là (si tu heberges plusieurs sites et ne veux pas modifier globalement ton fichier php.ini)
 
ini_set(directive, valeur)
 
Pour que ta session reste ouverte pendant 10h :
 
ini_set('session.cookie_lifetime, '36000') ;

Reply

Marsh Posté le 05-10-2004 à 11:26:55    

GaSPaRD77 a écrit :

Tu peux le faire juste pour le code de ton site là (si tu heberges plusieurs sites et ne veux pas modifier globalement ton fichier php.ini)
 
ini_set(directive, valeur)
 
Pour que ta session reste ouverte pendant 10h :
 
ini_set('session.cookie_lifetime, '36000') ;


 
merci :) Par contre, je dois mettre ça dans toutes mes pages ou juste celle du login?

Reply

Marsh Posté le 05-10-2004 à 11:47:45    

Dans toutes tes pages en en-tête

Reply

Marsh Posté le 05-10-2004 à 12:08:31    

GaSPaRD77 a écrit :

Dans toutes tes pages en en-tête


 
mais à chaque fois que j'affiche une nouvelle page, ça risque pas de réinitialiser le temps de connexion (je veux dire repousser l'heure à laquelle l'utilisateur va être effectivement déconnecté)?

Reply

Marsh Posté le 05-10-2004 à 12:11:28    

Si mais c'est pas justement que ce soit au bout de 10h d'inactivité ?

Reply

Marsh Posté le 05-10-2004 à 12:21:27    

GaSPaRD77 a écrit :

Si mais c'est pas justement que ce soit au bout de 10h d'inactivité ?


non, c'est 10h après la connexion de l'utilisateur... dans ce cas là, je mets mon set_ini uniquement dans la page de login, c'est ça?
 
bon, cela dit, la solution que tu m'as donné fera l'affaire mais si tu peux réponds à ma question précédente :) (pour ma culture)

Reply

Marsh Posté le 05-10-2004 à 12:21:27   

Reply

Marsh Posté le 05-10-2004 à 12:29:55    

Lorsque ton script se terminera la valeur par defaut (celle du php.ini) sera remise.
 
Si tu veux vraiment que ce soit 10h après la connexion de l'utilisateur tu peux te faire une fonction dans ton script de login qui recupère l'heure de connexion, et dans chaque page tu calcules la difference de temps entre ce moment et le moment de connection, tu places ensuite cette valeur dans le set_ini ...
 
J'éspère que c'est clair :)

Reply

Marsh Posté le 05-10-2004 à 12:34:49    

GaSPaRD77 a écrit :

Lorsque ton script se terminera la valeur par defaut (celle du php.ini) sera remise.
 
Si tu veux vraiment que ce soit 10h après la connexion de l'utilisateur tu peux te faire une fonction dans ton script de login qui recupère l'heure de connexion, et dans chaque page tu calcules la difference de temps entre ce moment et le moment de connection, tu places ensuite cette valeur dans le set_ini ...
 
J'éspère que c'est clair :)


 
oui, tout à fait :) Je vais rester sur ta première solution qui est satisfaisante. Meric pour ta réactivité :jap:

Reply

Marsh Posté le 09-12-2004 à 16:42:00    

bizarre, depuis qq jours,  
ini_set('session.cookie_lifetime, '36000'); n'a plus d'effet. c'est possible que cette fonction ait été désactivée d'une quelconque manière? :??:

Reply

Marsh Posté le 09-12-2004 à 18:15:58    

oui, ton hébergeur peut bloquer les ini_set de certaines variables (par sécurité en général)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 10-12-2004 à 09:30:41    

Xav_ a écrit :

oui, ton hébergeur peut bloquer les ini_set de certaines variables (par sécurité en général)


 
par quel moyen?
 
Je précise que mon hébergeur est en fait à qq mètres de moi. Je suis dans une entreprise et une subdivision administre les machines et la mienne, ben développe les applis.

Reply

Marsh Posté le 10-12-2004 à 11:53:14    

c'est une configuration au niveau du serveur apache, peut etre par le biais du http.conf, j'ai jamais été hébergeur, je sais juste qu'il peuvent le faire...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 10-12-2004 à 13:28:03    

le plus bizarre, c'est qu'en lisant un autre topic sr ini_set(), je devrais normalement me prendre un msg d'erreur si cett fct était désactivée. Cela dit, peut-être que l'affichage des msg d'erreur ont été désactés dans le php.ini vu que l'appli est en prod...

Reply

Marsh Posté le 10-12-2004 à 14:57:45    

un phpinfo() te permmettra de savoir si l'affichage des erreurs est masuqé ou pas


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 10-12-2004 à 15:16:38    

avec phpinfo(), à error_reporting, j'ai 2039 :??: c'est le résultat des & sur les constantes du genre E_ALL?

Reply

Marsh Posté le 10-12-2004 à 16:00:56    

forcément, c'est pas terrible vu comme ça....
 
EDIT:
2039 --> E_ALL & ~E_NOTICE
 
vu que je suis comme ça en local, et qu'un phpinfo sur mon serveur local me donne aussi 2039 ;)
 
pour info 2047 --> E_ALL


Message édité par Xav_ le 10-12-2004 à 16:07:00

---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 10-12-2004 à 16:33:31    

donc toutes les erreurs sont affichées sauf les warning, c'est bien ça?

Reply

Marsh Posté le 10-12-2004 à 16:42:52    

NON, toutes les erreurs sont affichées sauf les notices
 
warning et notices c'est pas pareil :o


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 11-12-2004 à 09:35:11    

ah? c'est quoi la constante pour les warning?

Reply

Marsh Posté le 12-12-2004 à 04:29:04    

error_reporting = E_ERROR
et là ça t'afichera que les erreurs --> pu de warning et pu de notice, mais connais pas le code...
 suffit de faire le test en local avec easyPHP par exemple (ce que j'ai fait pour avoir les 2 autres codes, mais faut penser à relancer le serveur apache après modif pour prise en compte des changements du php.ini ;))


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed