Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/10/2006, 02h48   #1
Invité de passage
 
Inscription : octobre 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 4
Points : 1
Points : 1
Par défaut [Cookies] Setcookie et header("Location: url")

Bonjour à tous,

Sur la page d'accueil de mon site, j'effectue un test pour m'assurer que le navigateur client accepte les cookies.
Je définis donc un cookie et je redirige ensuite vers une page qui va tester ce cookie et qui affichera (ou non) un message indiquant à l'internaute de vérifier sa configuration.

Pour cela j'utilise le code suivant :

Code :
1
2
3
setcookie('cookie',"enabled",time()+60);
header("Status: 301 Moved Permanently", false, 301);
header("Location:  http://"  . $_SERVER["SERVER_NAME"] . "/enter.php");
Malheureusement, il semblerait que cela ne fonctionne pas avec tous les navigateurs, notamment avec Opera 9.01 : le cookie n'est pas créé.

Est-ce impossible d'envoyer un cookie et de rediriger dans la meme page ?
Ces deux en-tetes seraient-ils incompatibles entre-eux ?
Cyoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2006, 07h02   #2
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Je suppose que ça vient de la politique d'acceptation des cookies définie dans chaque navigateur. Tu ne maîtrises pas ce paramètre, l'utilisateur a toujours la possibilité de refuser le cookie.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2006, 21h24   #3
Invité de passage
 
Inscription : octobre 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 4
Points : 1
Points : 1
Eusebius,

Je ne pense pas que cela vienne de cela (j'en suis même sur) vu que sans la redirection, le navigateur crée bien le cookie.

Je sais bien que l'utilisateur peux refuser les cookies, bien entendu dans les tests que j'ai effectué, j'ai configuré les navigateurs pour accepter les cookies.

Le problème vient vraiment de la combinaison du cookie et de la redirection, mais je ne sais quelle en est la cause ni comment "corriger" cela ...
Cyoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2006, 21h29   #4
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Peut-être effectivement que si on envoie un header vers une autre location, le cookie n'est pas envoyé. Et en effet, ça peut paraître étrange de mettre un cookie depuis un site qui répond un code d'erreur, non ?

Peut-être que ce n'est pas possible de mettre à la fois un cookie et un code d'erreur HTTP, ou en tout cas que certains navigateurs considèrent ça comme impossible. J'ai pas de réponse à apporter, désolé... Peut-être que tu pourrais faire des essais pour voir si c'est le header Location ou le code d'erreur qui pose problème ? Juste par curiosité intellectuelle...
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2006, 22h43   #5
Invité de passage
 
Inscription : octobre 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 4
Points : 1
Points : 1
Je viens d'effectuer une nouvelle série de tests, et je remarque que cela fonctionne sur mon serveur local (PHP installé en tant que module Apache), mais pas chez mon hébergeur (PHP installé en tant que CGI)

Donc, je me pose la question de savoir si le fait que PHP soit installé en tant que CGI ne serait pas la cause du problème ?

Et dans ce cas, comment le résoudre ... ?
Cyoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2006, 22h50   #6
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par Cyoul
Donc, je me pose la question de savoir si le fait que PHP soit installé en tant que CGI ne serait pas la cause du problème ?
Pas forcément, j'ai remarqué que les headers ne fonctionnaient pas toujours de la même manière en local et à distance (mais je me rappelle plus les subtilités, désolé).
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2006, 05h06   #7
Invité de passage
 
Inscription : octobre 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 4
Points : 1
Points : 1
A force d'essais, j'ai enfin réussi à faire ce que je désirais

Il semblerait que le fait d'avoir supprimé la définition de la date d'expiration du cookie ai réglé le problème.

Donc en remplacant :
Code :
setcookie('cookie',"enabled",time()+60);
par :
Code :
setcookie('cookie',"enabled");
Quand à la cause, je doute toujours ... Peut-être est-ce du à une différence d'heure ou de fuseau horaire entre le serveur et le client ... je ne le saurai peut-être jamais
Cyoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h48.


 
 
 
 
Partenaires

Hébergement Web