[PHP] redirection (header)

Sandriine Messages postés 1400 Statut Membre -  
Dalida Messages postés 7114 Statut Contributeur -
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');
	}
}

?>
A voir également:

3 réponses

smellems Messages postés 135 Statut Membre 46
 
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 7114 Statut Contributeur 923
 
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 1400 Statut Membre 283
 
Hum désolé mais je ne comprends pas grand chose à ta solution...
0
Dalida Messages postés 7114 Statut Contributeur 923 > Sandriine Messages postés 1400 Statut Membre
 
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 1400 Statut Membre 283
 
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 7114 Statut Contributeur 923
 
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