2010-07-21 15 views
4

J'ai deux scripts phpphp SetCookie fonctionne dans Firefox, mais pas IE

de Test.php

<?php 
header("location: test2.php"); 
setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/'); 
exit; 
?> 

de test2.php

<?php 
var_dump($_COOKIE); 
?> 

Je signale alors mon navigateur pour Test.php qui redirige vers test2.php. Je reçois alors les résultats suivants.

Dans firefox, je reçois les éléments suivants:

array 
    'test' => string '8kFL4IZfjkBmV7AC' (length=16) 

Cependant, dans IE6, j'obtiens ce qui suit:

array 
    'PHPSESSID' => string 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' (length=32) 

Note: J'ai volontairement x'D le PHPSESSID ci-dessus!

Est-ce que quelqu'un sait où je vais mal et pourquoi IE6 ne montre pas mon cookie.

Merci à l'avance

Répondre

0

Un navigateur pourrait réagir plus rapidement à l'en-tête vous rediriger vous faites alors l'autre.

Essayez de tourner les commandes autour de:

setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/'); 
header("location: test2.php"); 
+0

Je l'ai fait et ont également mis le sommeil (2) entre ces deux lignes, mais toujours pas de différence :-( – matt

+0

L'ordre de ces instructions ne devrait avoir aucun effet sur la réponse.Selon RFC 2616 (HTTP 1.1), la section 6.1 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html), le 'Statut 'header est la première ligne de la réponse , suivi par d'autres en-têtes (dont le cookie est un). –

0

regardant votre exemple, vous avez obtenu en-tête() d'abord, puis setcookie(). Essayez d'abord setcookie(), puis faites l'en-tête();

3

Travaillez-vous sur un environnement localhost? IE http://localhost pour tester? Si c'est le cas, cela peut causer des problèmes avec le cookie défini. Ma suggestion est de définir le champ de domaine pour le setcookie, si vous travaillez sur localhost essayez ceci: setcookie("username", "George", false, "/", false); ou définir un vhost avec un nom de serveur autre que localhost et l'utiliser pour le domaine.

Réglage du cookie avec le domaine serait quelque chose comme:

setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/', '.domain.com');

Espérons qui aide ya dehors.

+0

fonctionne parfaitement, merci ............. –

0

Certains navigateurs empêchent le paramétrage des cookies avant que l'interaction de l'utilisateur ne se produise. Je sais que Safari fait, et je crois que IE fonctionne de la même manière. Fondamentalement, tous les cookies seront ignorés sur la première réponse reçue de votre site. Je soupçonne que si vous essayez plutôt quelque chose comme ce qui suit, il fonctionnera comme prévu:

test0.html

<html> 
    <body> 
    <a href="test1.php">force user interaction</a> 
    </body> 
</html> 

test1.php

<?php 
    header("location: test2.php"); 
    setcookie("test", "8kFL4IZfjkBmV7AC", time()+60*60, '/'); 
    exit; 
?> 

test2.php

<?php 
    var_dump($_COOKIE); 
?>