Problème avec header() // urgent....

Résolu
bibi_angel -  
(Pabix) Messages postés 578 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai un petit problème avec header, peut etre pourrez vous m'éclairer un peu .... voila j'ai un menu deroulant dans un formulaire et je veux rediriger l'utilisateur en fonction de son choix.
Pour ça j'utilise header() et j'obtiens un mangifique :

Warning: Cannot modify header information - headers already sent by (output started at /web_page/html/gestion_prod/index2.php:3)

une petite idée?!?

voici le morceau de code :

<form method="post" action=index2.php>
<p>
<br><b><font color="#306EFF">Choix de l'application : </font></b></br>
</p>
<select name="choix_appli" >
<option value="rien">
<option value="toto">toto
<option value="titi">titi
<option value="tutu">tutu
<option value="tata">tata
</select>

<input type="submit" value="ok"/>

</form>

<?

$appli=$_POST['choix_appli'];

if($appli!="rien")
{

switch($appli)
{
case "toto": header('Location: http://.../gestion_prod/toto.php'); break;
case "titi" : header('Location: http://.../gestion_prod/titi.php');break;
case "tutu" :header('Location: http://.../gestion_prod/tutu.php'); break;
case "tata" : header('Location: http://.../gestion_prod/tata.php'); break;
}
}

?>



voili voilou

2 réponses

François
 
Explication : Les header (comme leur noms l'indiquent) doite être envoyé au navigateur en 1er ! ... jusque là tout le monde suit ?

Dès que tu fais un echo ou un print, PHP génère pour toi un header (par défaut) dans ton code, tu commence par afficher ton <form> ... donc un header a été émis. Ensuite, tu teste le contenu de $appli et décide (ou non) d'émettre un nouvel header ...

La solution : exécute ton code PHP en premier, puis émet ton html

NB : Après un appel à header() il est préférable de faire un exit() pour stopper l'exécution du script courant.
<?
// AVANT ce code PHP rien en HTML (ni echo, ni print, ...)
switch($_POST['choix_appli']i)
{
  case "rien": break // je fais RIEN !
  case "toto": header('Location: http://.../gestion_prod/toto.php'); exit();
  case "titi" : header('Location: http://.../gestion_prod/titi.php');exit();
  case "tutu" :header('Location: http://.../gestion_prod/tutu.php'); exit();
  case "tata" : header('Location: http://.../gestion_prod/tata.php'); exit();
}
// 
?> 
<!-- ICI j'emet mon code html et envoie donc un header -->
<form method="post" action=index2.php>
<p>
<br><b><font color="#306EFF">Choix de l'application : </font></b></br>
</p>
<select name="choix_appli" >
  <option value="rien">
  <option value="toto">toto
  <option value="titi">titi
  <option value="tutu">tutu
  <option value="tata">tata
</select>
<input type="submit" value="ok"/>
</form>
0
bibi_angel
 
ahhh ben c'est plus clair que ce que j'avais trouvé sur les header()
Merci pour les explications et pour ton aide François, :D
Jvais tester tout ça
bonne journée
0
(Pabix) Messages postés 578 Date d'inscription   Statut Membre Dernière intervention   81
 
en tout cas, n’utilise pas <br>…</br>, mais juste une balise <br/>.
0