Page 1 sur 1

Problème de header avec IE

Posté : 05 mai 2009, 01:51
par Invité
Bonsoir,

J'ai un problème avec un header de redirection dans un de mes scripts, UNIQUEMENT sous IE. Sous FF rien à signaler.
header('Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . '/' . 'affiche_convention.php?variable=' . urlencode($chaine));
Cette ligne est sensée rediriger vers une autre page en lui passant en parametre la chaine $chaine après l'avoir préalablement urlencodée.
Tout fonctionne parfaitement sous FF mais sous IE j'ai le droit a une jolie 404...
Par contre, si je fais
header('Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . '/' . 'affiche_convention.php?variable=toto');
Je retrouve effectivement toto en paramètre...
Avez vous une idée pour solutionner mon probleme ?
Merci,
ote[/php]

Re: Problème de header avec IE

Posté : 05 mai 2009, 06:12
par Calimero
Tout fonctionne parfaitement sous FF mais sous IE j'ai le droit a une jolie 404...
Si tu as une 404, alors tu dois avoir une entrée correspondante dans ton error log avec l'URL demandée qui a déclenché l'erreur... Et il te sera alors très facile de comprendre ce qui cloche dedans.

Posté : 05 mai 2009, 10:40
par ote
Bonjour,

Je suis sur un serveur mutualisé, je n'ai donc pas accès à mon error log.

Je ne comprends vraiment pas pourquoi cela fonctionne avec firefox et pas avec IE ?!?

Posté : 05 mai 2009, 11:48
par Calimero
Bonjour,

Je suis sur un serveur mutualisé, je n'ai donc pas accès à mon error log.

Je ne comprends vraiment pas pourquoi cela fonctionne avec firefox et pas avec IE ?!?
Bonjour,

Même sur les mutualisés on peut avoir accès à l'error log, en général c'est mis en place par ton hébergeur. Il suffit qu'il soit stocké dans ton arborescence ftp, souvent pas loin de ton espace web. Souvent il se trouve dans le même répertoire que les logs ordinaires.

Je ne vois pas vraiment comment ton problème s'expliquerait par le navigateur, par contre la forme de l'url qui déclenche l'erreur est la clé pour comprendre ton souci, d'où l'intérêt de l'error log. Rapproche-toi de ton hébergeur pour y avoir accès si ce n'est pas déjà le cas.

Posté : 05 mai 2009, 13:53
par D4Y
essai un
echo 'Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . '/' . 'affiche_convention.php?variable=' . urlencode($chaine) ;
Et regarde si l'adresse est correcte. Car p-e que firefox corrige des petites erreurs d'url et pas IE ;)

Posté : 05 mai 2009, 16:46
par ote
non, l'adresse est correcte puisque
header('Location: http://' . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . '/' . 'affiche_convention.php?variable=toto'); 
fonctionne et m'emmène bien sur la page affiche_convention.php

Je pense que le problème vient de la variable chaine qui est urlencodé avant d'être passé comme paramètre.

Dans $chaine il y a : $chaine = serialize($_POST);

Posté : 05 mai 2009, 19:28
par ote
Bon ben j'ai fini par trouvé ce qui posait problème à force de faire des test : l'url est trop longue pour ie dont la limite est de 2083 caractères alors que pour firefox c'est 65 536. Et effectivement le formulaire est très long et il y a donc un paquet d'info à passer par l'url.

Une idée pour résoudre ce problème sans devoir tout refaire avec des sessions ?

Posté : 05 mai 2009, 19:45
par D4Y
renommer tes variables plus court
ex: ?variable= devient ?var=

Posté : 05 mai 2009, 19:49
par zeus
Que contient ta chaine ?

Posté : 05 mai 2009, 20:38
par AB
Une idée pour résoudre ce problème sans devoir tout refaire avec des sessions ?
Ce serait quand même plus adapté avec des sessions et éventuellement une petite partie de tes variables dans l'URL de redirection.

Posté : 06 mai 2009, 15:04
par ote
Merci à tous pour votre aide. Je vais donc modifier le programme pour intégrer les sessions. Renommer les variables ne suffira pas étant donné qu'en moyenne il y a 5000 caractères dans $chaine.

Je ne peux pas mettre résolu sur le sujet car je ne m'était pas loguée quand j'ai écris le premier message.

ote