2009-08-19 8 views
0

Les sessions sont démarrées via session_start(), je me rends compte que beaucoup, mais pour rendre les sessions persistantes, ils ont besoin d'un ID.Question rapide sur les sessions en PHP

Maintenant, le fichier php.ini a un paramètre:

session.use_cookies = 1 

donc je n'ai pas passer l'ID autour. Mais il y a un autre paramètre:

; Lifetime in seconds of cookie or, if 0, until browser is restarted. 
session.cookie_lifetime = 0 

Dois-je comprendre que si je mets en œuvre cela et aller sur mon site, connectez-vous, fais ce que je veux faire, fermer le navigateur vers le bas et le lancer à nouveau un peu de temps plus tard, que j'ai gagné ne serai plus connecté quand je retournerai sur mon site?

EDIT: Donc, pour rester connecté, je vais devoir combiner cela avec les cookies côté client.

Je suppose que j'aurai besoin de 2 champs de base de données. 1 pour l'ID de session, 1 pour l'ID que je donne au cookie.

Répondre

2

Non, vous ne serez plus connecté.

Voir ma réponse ici: How do I Keep a user logged in for 2 weeks? (Voir http://www.drupal.org/node/31506 pour plus d'informations sur les tâches prévues, si vous voulez que les personnes soient déconnectées après un certain temps). Cela pourrait vous aider.

Vérifiez la chaîne de l'agent utilisateur (juste pour la sécurité.) Si un pirate découvre une clé d'une manière ou d'une autre ... il peut envoyer un faux cookie et être connecté automatiquement. connectez-vous à nouveau une fois après la copie des cookies, mais ce serait un désastre pour les personnes qui modifient ou mettent à jour le navigateur sans arrêt).

+0

Merci. Une tâche planifiée que vous dites. Je n'en ai jamais utilisé, je vais devoir regarder ça. – KdgDev

+0

Une vérification IP? Pas tout le monde (y compris moi) a une adresse IP statique. – KdgDev

+0

Votre adresse IP externe est-elle statique? Je ne savais pas que c'était possible. Ou faites-vous un site intranet qui fonctionne sur un réseau? –

0

Je dirais oui. Voyez-vous autrement?

+0

Donc, si je veux toujours être connecté, je vais devoir combiner cela avec des cookies côté client? – KdgDev

+0

@WebDevHobo: http://stackoverflow.com/questions/1290837/how-do-i-keep-a-user-logged-in-for-2-weeks/1290861#1290861 –

2

Je pense que vous comprenez correctement, le manuel PHP dit:

session.cookie_lifetime spécifie la durée de vie du cookie en secondes qui est envoyé au navigateur. La valeur 0 signifie "jusqu'à ce que le navigateur soit fermé ". La valeur par défaut 0.

http://php.net/session.configuration#ini.session.cookie-lifetime

0

oui, c'est le but de cookie de session.