[PHP] redirection (header)

Fermé
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 - 10 mars 2008 à 16:55
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 10 mars 2008 à 23:38
Bonjour,
J'ai une page php qui récupère des informations depuis un formulaire simple, et suivant l'une d'entre elles, une redirection vers une page spéciale est effectuée.
Or, elle ne marche pas, et j'aimerais que vous m'expliquiez pourquoi, et si possible me corriger mon erreur.
Voici ma page php :

<?

$mdp="mmm";

$id=$_GET["id"];
echo "id : ".$id;

$mode=$_GET["mode"];
echo "<br>mode : ".$mode;

$mp=$_GET["TxtMdp"];
echo "<br>mp : ".$mp;

If ($mp == $mdp)
{

	If ($mode == "edit")
	{
		$dest="aff.asp?id=".$id;
		header('Location: aff.asp');
	}
	If ($mode == "add")
	{
		header('Location: add.php');
	}
}

?>

3 réponses

smellems Messages postés 135 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 4 mai 2012 46
10 mars 2008 à 18:42
Bonjour,
je crois que c'est parce que tu fais des echo ou print avant d'envoyer les headers. si tu veux envoyer des headers il faut que ça soit la première chose que tu envoies vers la sortie (echo, print)

je ferais quelque chose comme ça...
<?php
$id=$_GET["id"];
$mode=$_GET["mode"];
$mp=$_GET["TxtMdp"];
If ($mp == "mmm")
{
	If ($mode == "edit")
	{
		header("Location: aff.asp");
                exit;
	}
	If ($mode == "add")
	{
		header("Location: add.asp");
                exit;
	}
}
?>

bonne chance

et j'imagine que tu peux aussi faire comme les autres ont dit et utiliser

header("Location: http://www.ton_site.com/add.asp");
1
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
10 mars 2008 à 17:24
salut,

il faut utiliser une adresse absolue.
Note: HTTP/1.1 demande une URI absolue comme argument de » Location:, y compris le protocole, hôte et chemin absolu. Mais certains navigateurs acceptent les URI relatives. Vous pouvez généralement utiliser les variables globales $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] et dirname() pour construire vous-même une URI absolue 

source
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
10 mars 2008 à 18:14
Hum désolé mais je ne comprends pas grand chose à ta solution...
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920 > Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010
10 mars 2008 à 18:37
hum, tu es allée lire le manuel PHP ?

il faut une adresse complète pour utiliser 'header()' :
http://www.tonsite.tld/dossier/fichier.ext
0
Sandriine Messages postés 1255 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 18 août 2010 283
10 mars 2008 à 21:49
OK merci smellems et les autres pour votre aide, en effet c'est simplement les echo qui bloquaient les header, je les ai donc enlevé, ils ne me servaient que pour tester si mes valeurs étaient correctement transmises.

Je précise donc que les
 header('Location:page.php'); 
marchent bien, pas forcément besoin d'une URL.

Merci de votre aide, à bientôt
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
10 mars 2008 à 23:38
oki !

le coup de l'adresse absolue ce n'est pas une blague…
tu travaillais en local ou en ligne ?

si le 'header()' ne fonctionnait pas à cause d'un envoi ('print()', 'echo()'…) effectué avant, le serveur aurait dû te signaler l'erreur ('Headers already sent…').

pour ton problème, on peut le considérer comme "résolu" ?
0