2010-10-29 8 views
0

Donc, j'ai joué avec des sessions en PHP aujourd'hui, et après avoir tergiversé sur la nécessité d'utiliser des sessions ou non depuis que j'ai commencé PHP il y a environ 6 mois (ça faisait peur), j'ai trouvé c'est très simple. Mais j'utilise time() comme identifiant de session, j'expliquerai pourquoi ...Utiliser les sessions PHP

J'ai trouvé une page sur la référence de session dans le site php.net, et l'un des exemples de code l'utilise pour gérer des sessions:

session_start(); 

if(!isset($_SESSION['last_access']) || (time() - $_SESSION['last_access']) > 60) 
$_SESSION['last_access'] = time(); 

Cependant, cela expire très rapidement. Bien sûr, je pourrais changer 60 à un très grand nombre, mais c'est pour un site Web où les clients passeront en moyenne, 3 - 4 heures juste ajouter des produits au panier, donc je ne peux pas avoir de sessions expirer à moins qu'ils ne ferment le page.

Comment puis-je transférer le même ID de session à toutes les pages de notre site, quel que soit le temps(). Je ne veux pas vraiment utiliser le temps pour gérer les identifiants de session.

I a bien utilisé la SID constante dans une URL comme ceci:

<?php echo '<a href="theotherpage.php?sessid='.SID.'">go to another page</a>'; ?> cependant, en utilisant la constante, comme conseillé par le site Web de PHP, ne fonctionne pas.

Quelqu'un peut-il m'aider s'il vous plaît à maintenir le même ID de session, indépendamment du temps, à travers le site entier?

Votre aide est très appréciée, et merci! :)

+2

Vous avez mal compris ce que ce code Est-ce que. Je garde juste le dernier temps d'accès mis à jour dans la session par intervalles de 60 secondes. Il n'expire pas la session, et l'identifiant de session est quelque chose de complètement différent. – deceze

+0

Comment puis-je obtenir l'identifiant de session alors? Et c'est unique pour chaque visiteur du site? –

+1

session_id() l'obtiendra –

Répondre

2

Je pense que vous pourriez avoir un malentendu sur les sessions. En supposant que leurs cookies sont activés, vous n'aurez jamais besoin d'utiliser un identifiant de session. L'identifiant de session lui-même est stocké dans un cookie. Si vous souhaitez prolonger la durée de vie d'une session, utilisez simplement ini_set ('session.gc_maxlifetime', 20); et changez 20 pour le nombre de minutes que vous souhaitez pour cela.

Veuillez garder à l'esprit que vous devez utiliser start_session(); au sommet de chaque fichier pour s'assurer que le fichier spécifique utilise des sessions. (Ce serait une bonne raison d'avoir 1 fichier de configuration principal inclus en haut des fichiers php, donc vous pouvez facilement ajouter cela au fichier 1 et il est ajouté à toutes les pages)

+0

Lorsque les utilisateurs ajoutent des produits au panier, j'utilise l'ID de session en tant qu'ID pour ce visiteur particulier dans une base de données, c'est pourquoi je l'ai fait de cette façon. Et je n'ai rien à dire non plus, j'ai reçu l'ordre de le faire malheureusement. –

+0

Oups. J'utilise session_start(), j'ai juste oublié de le coller dans la question. –

+1

Je n'ai jamais utilisé cela, mais vous pouvez obtenir l'identifiant de session de leur session en cours en appelant session_id(). Encore une fois, en supposant que les cookies soient activés, la façon dont vous gardez une session ouverte aussi longtemps que vous le voulez est par la fonction ini_set. Cela vous permet de lui dire de garder la session ouverte jusqu'à ce que vous vouliez la fermer. –