PB d'affichage avec session active/inactive

Résolu
Bonjour,

Je suis en train de développer mon propre site, et j'ai un certain problème avec les sessions actives et inactives.

Tout d'abord, j'ai bien le :
<?php  
 session_start();  
?> 

avant le code (donc avant le DOCTYPE.

Le problème vient de là :
<?php  
 if (isset($_SESSION['login']))  
 {  
  // si une session est active  
  header("location:adminpage.php");  
 }  
 else  
 {  
  // si aucune session n'est active  
  echo  '  
  <form action="login.php" method="post">  
  <table border="0">  
  <tr><td align="center"><b>Utilisateur</b></td>  
 <td><input type="text" name="NomUtilisateur" value="" size="20"></td></tr>  
 <tr><td align="center"><b>Mot de passe</b></td>  
 <td><input type="password" name="MotDePasse" value="" size="20"></td></tr>  
 <tr><td align="center" colspan="2"><br><input type="submit"  
  value="Identifiez-vous !"></td></tr>  
</table>  
</form>';  
 }  
?>  


Lorsque la session est inactive, sa marche nickel j'ai mon formulaire qui s'affiche.
Mais quand ma session est active, et que je reviens sur cette page en question, il y a un message d'erreur :

Warning: Cannot modify header information - headers already sent by (output started at /home/x/public_html/administration.php:30) in /home/x/public_html/administration.php on line 43

La ligne 43 correspond à celle ci
header("location:adminpage.php"); 


Auriez vous votre aide à me proposer ?

Peace

4 réponses

  1. Daccord merci, j'essaie ça.
    PS : Tu as oublié de fermer la balise :p

    Edit : Sa marche super, je l'ai modifié a ma sauce pour que ça marche sur toutes mes pages.

    Merci, Peace
    1. tu dois absolument mettre un header('Location avant tout code html

      tu peux passer par une variable intermediaire

      <?php  
      session_start();
      $aff_formulaire=false;
       if (isset($_SESSION['login']))  
       {  
        // si une session est active  
        header("location:adminpage.php");  
       }  
       else  
       {  
      $aff_formulaire=true;
      }
      
      
      et plus bas dans ton body a l'endroit ou tu veux mettre le formulaire:
      
      if($aff_formulaire){
        //ton formulaire
      }
      1. Mais il va alors s'afficher avant même la tête, et le menu.
        Sachant que ce bout de code, est placé en plein milieu du body :s
        1. d'accord session_start() doit être avant tout code html, mais
          <?php
          if (isset($_SESSION['login']))
          {
          // si une session est active
          header("location:adminpage.php");


          aussi doit être avant tout code html