Cookies et sessions

Cookies et sessions - PHP - Programmation

Marsh Posté le 05-02-2011 à 21:38:20    

Bonsoir,
j'ai un problème avec les cookies et les sessions.
 
J'ai sur mon site un système de session afin que l'utilisateur puisse avoir accès à un compte personnel.
J'utilise donc pour ce faire la fonction php "session_start();". Un cookie de type session est créé "PHPSESSID" (je stocke un id dans ce cookie).
Tout marche très bien de ce coté la.
Le problème arrive lorsque je souhaite donner à l'utilisateur la possibilité de se connecter automatiquement (de la même manière que le site du zéro). Je créer un cookie avec la fonction php "setcookie()". Le cookie ne se créer pas... Pourtant mon navigateur
(Firefox) accepte les cookies ainsi que les cookies tiers. Ma demande est donc de pouvoir réussir à créer un cookie autre qu'un cookie de session.
Voici comment je procède :
 
<?php
setcookie('id', 'nothing', time() + 365*24*3600, null, null, false, true);
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 
 
 
   <head> etc ...
 
 
 
Je n'ai jamais utilisé les cookies mis à part pour les sessions.
Je sais que les cookies de donnés ne se créer que après le chargement d'un autre fichier .php
Voila j'espère que vous pourrez m'aider.
Merci d'avance.


Message édité par jacka29 le 05-02-2011 à 21:38:43
Reply

Marsh Posté le 05-02-2011 à 21:38:20   

Reply

Marsh Posté le 05-02-2011 à 21:59:03    

Chez moi le cookie se crée bien, ton problème doit venir d'ailleurs


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 05-02-2011 à 22:51:45    

D'ou ça pourrait venir svp ?

Reply

Marsh Posté le 05-02-2011 à 23:04:02    

La seule chose qui pourrait causer ce problème serait que pour une raison X ou Y les headers soient envoyés à ton navigateur avant ton setcookie. Essaye de mettre la ligne setcookie toute seule dans un .php sur ton serveur que tu appelles directement, et vois si le problème persiste.


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 05-02-2011 à 23:58:41    

J'ai fais une page vierge avec le setcookie et le problème persiste...

Reply

Marsh Posté le 06-02-2011 à 00:23:03    

C'est sur un serveur local ? En ligne ? Si c'est en ligne tu peux nous donner le lien ?
 
Un problème de configuration du serveur ne serait pas a exclure mais je vois mal ce qui pourrait causer ce genre de problèmes [:transparency]


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 06-02-2011 à 01:05:07    

Serveur en ligne mais donner le lien va pas faire grand chose de plus je pense. J'espère que tu ne verras pas d'inconvénient à ce que je mette pas le lien.
Niveau hébergement je suis chez 1&1 je sais pas si ça joue ^^.
Après je connais pas bien les cookies donc c'est peut être une erreur toute con. C'est bizarre parce que le cookie de session se créer...

Reply

Marsh Posté le 06-02-2011 à 01:14:21    

jacka29 a écrit :

Serveur en ligne mais donner le lien va pas faire grand chose de plus je pense. J'espère que tu ne verras pas d'inconvénient à ce que je mette pas le lien.
Niveau hébergement je suis chez 1&1 je sais pas si ça joue ^^.
Après je connais pas bien les cookies donc c'est peut être une erreur toute con. C'est bizarre parce que le cookie de session se créer...


Bah je voulais vérifier si le problème venait de ton client ou de ton serveur. Si tu veux pas le poster en public je peux comprendre :jap:
 
Mais la ligne setcookie semble bonne. Essaye un truc plus simple genre setcookie("Test", "Test" ); pour voir


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 06-02-2011 à 01:40:37    

Grande nouvelle ^^.
Cette ligne : setcookie('test', 'test'); créer parfaitement bien un cookie nommé test...
 
Edit : Ce code la marche aussi setcookie('test','test',time()+3600);


Message édité par jacka29 le 06-02-2011 à 01:50:57
Reply

Marsh Posté le 06-02-2011 à 01:52:30    

Bon bah t'as chié quelque chose dans les derniers paramètres :o


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 06-02-2011 à 01:52:30   

Reply

Marsh Posté le 06-02-2011 à 02:17:47    

Ok merci pour ton aide ça ma permis de trouver une solution.
En faite pour les versions de php inférieur à la 5.2.0 il ne faut pas utiliser setcookie mais à la place :  
 
header( "Set-Cookie: test=test; httpOnly" );
 
Pour les versions de php supérieur ou égale à la 5.2.0 on peut utiliser :
 
setcookie('test','test', time()+3600*24*365*10, null, null, false, true);
 
 
Voila ce que j'en ai compris ^^. Enfin en tout cas ça marche, après je sais pas si le httponly fonctionne.

Reply

Marsh Posté le 08-02-2011 à 10:16:52    

Non setcookie marche même en php4, c'est juste que le dernier parametre a été ajouté en php5.2
DOnc si tu le mets et que t'es en php < 5.2 c'est normal que ça marche pas.


Historique
Version  Description
5.2.0  Le paramètre httponly a été ajouté.

Reply

Marsh Posté le 09-02-2011 à 16:48:56    

Oui exact j'ai vu ça après.
Merci de ta réponse.
 
 
PS : Le sujet est résolue.


Message édité par jacka29 le 09-02-2011 à 16:49:59
Reply

Sujets relatifs:

Leave a Replay

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