[PHP] redirection (header)

Sandriine Messages postés 1400 Statut Membre -  
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   -
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');
	}
}

?>
Configuration: Windows XP
Internet Explorer 7.0

3 réponses

  1. 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
  2. Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   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
    1. Sandriine Messages postés 1400 Statut Membre 283
       
      Hum désolé mais je ne comprends pas grand chose à ta solution...
      0
      1. Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   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
  3. 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
    1. Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   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