Session & cookies

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Session & cookies

par Ouaibou » 16 juin 2006, 22:02

D'accord merci bien je vais regarder de ce coté :D

par delcedo galaxialord » 16 juin 2006, 21:58

Re salut !

Dans ce cas, il faut que tu modifies les paramètres du cookie, je te conseille de regarder la fonction :
session_set_cookie_params (int lifetime, ...)
session.cookie_lifetime entier

Spécifie la durée de vie du cookie en secondes. La valeur de 0 signifie : "Jusqu'à ce que le navigateur soit éteint". La valeur par défaut est : 0.
(source php.net)

Je crois que cela résoudra ton problème ;)

Attention ! Il faut appeler cette fonction sur toutes tes pages et avant le session_start() !

par Shrell » 16 juin 2006, 21:36

Si j'ai bien tout compris aux sessions, l'identifiant de session est automatiquement sauvegardé dans un cookie, qui expire au bout de 22 minutes (par défaut). Ce qui explique que même en fermant son navigateur, on n'a pas besoin de s'identifier à nouveau si on revient dans le laps de temps auquel on a droit et si le navigateur ne détruit pas les cookies à la fermeture. Ensuite, chaque nouvel appel à session_start() remet le compteur à zéro, enfin à 22 minutes :lol:
Donc pas besoin de s'occuper des cookies ;)

EDIT : En fait c'est le fichier de session coté serveur qui dure 22 minutes...
session.cookie_lifetime entier
Spécifie la durée de vie du cookie en secondes. La valeur de 0 signifie : "Jusqu'à ce que le navigateur soit éteint". La valeur par défaut est : 0. Voir aussi session_get_cookie_params() et session_set_cookie_params().

par Ouaibou » 16 juin 2006, 21:28

Certe ça fonctionne :)

Mais pourquoi il m'est inutile de m'occuper des cookies ? Car si l'utilisateur ferme son naviguateur et qu'il décide de revenir quelques temps plus tard, les variables de session n'existeront plus. Bref, l'identifiant de session stocké dans le cookie me permet (en gros) de vérifier si je peux redéclarer le contenu des variales sessions.

D'où l'utilité du cookie de départ. Car sans ça je ne vois pas trop comment faire.

par delcedo galaxialord » 16 juin 2006, 21:06

Essaie de faire le test :
<?php
session_start();
if($_SESSION['time'])
{
     echo "Date à laquelle Session['time'] a été définie : ".$_SESSION['time'];
}
else
{
     echo "démarrage de la session";
     $_SESSION['time'] = date("d/m h:i:s");
}
?>
Lors de la première visite de ta page tu devrais voir "démarrage de la session", et lors d'une réactualisation, tu devrais voir "Date à laquelle Session['time'] a été définie : " (suivie de la date).

Si cela fonctionne, alors ne t'occupe plus des cookies ;)

par Ouaibou » 16 juin 2006, 19:57

En fait j'enregistre l'identifiant de session dans un cookies afin de "prolonger la session" (espace membre). Bref je compare ensuite l'identifiant cookie avec celui dans la base de données etc...

Par contre si tu me dis que ça cré un cookie automatiquement lors d'un appel a session_start() j'aimerai bien avoir plus d'information mais j'ai rien trouvé d'intéressant à ce sujet.

par delcedo galaxialord » 16 juin 2006, 18:38

Re :)

Mais je comprends pas trop l'intérêt ?

Pourquoi veux tu stocker l'identifiant de la session dans le cookie ? Normalement lorsque tu appelles session_start() le cookie est créé automatiquement (donc tu n'as pas à l'enregistrer manuellement dans le cookie).

Essaie, mais il me semble que c'est inutile de vouloir stocker l'identifiant de la session ^^

par Ouaibou » 16 juin 2006, 14:27

Ah ok merci maintenant je sais au moins d'où ça vient :)

Par contre c'est assez embêtant si on doit changer l'identifiant de session et qu'on doit le mettre à jour (dans le cookie) à chaque requête. Bref on est obligé de rafraichir la page et de remettre a jour le cookie obligatoirement ? Quelqu'un ne connaitrait il pas une autre solution ?

@+ ;)

par delcedo galaxialord » 15 juin 2006, 19:00

Salut !

il me semble que setcookie doit être utilisé tant que rien n'a été écrit sur la page, donc affiche tes echos après ces commandes ;)

edit : non c'est pas ca, en fait la valeur contenu dans les cookies est récupérée au chargement de la page, donc les valeurs sont celles de la page précédente. Donc c'est pour ca que tu as un temps de retard à chaque fois.

@+

Session & cookies

par Ouaibou » 15 juin 2006, 18:30

Bonsoir,

Voici mon problème :

Je démarre une session, j'enregistre l'identifiant de session dans une variable . Une fois ceci fait, j'enregistre également l'identifiant de session dans un cookie. Seulement une fois que j'affiche à l'écran le contenu du cookie et celui de la variable contenant l'identifiant de session, je n'obtiens pas la même chose. Bref le cookie contient tjs l'identifiant de session précédent.
<?php
	session_start();
	$session_id = session_id();
	
	echo "Session id : ".$session_id."<br />";

	setcookie('id_session', $session_id, time() + 777, '/', '.doeeng.com');
	
	echo "Cookie :".$_COOKIE['id_session']."<br />";
?>
Pour être précis, au premier affichage $session_id m'affiche l'identifiant de session courant tandis que $_COOKIE['id_session] ne m'affiche rien. Si je réactualise, $_COOKIE['id_session'] contient l'identifiant de session précédente, et $session_id le nouvel identifiant.

Quelqu'un saurait t'il me dire si c'est normal ?

Merci d'avance.

@+