IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Cookies] Setcookie et header("Location: url")


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 4
    Points : 2
    Points
    2
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    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.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    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 ...

  4. #4
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    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...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    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 ... ?

  6. #6
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    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é).

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    setcookie('cookie',"enabled",time()+60);
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/09/2008, 02h27
  2. Réponses: 1
    Dernier message: 13/03/2008, 15h15
  3. [Cookies] Cannot modify header information sur setcookie
    Par Jimmy Monkey dans le forum Langage
    Réponses: 4
    Dernier message: 21/01/2008, 22h44
  4. header('Location:$url') VS session_start()
    Par Paniez dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 22h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo