PB d'affichage avec session active/inactive

Résolu
SaM SonG Messages postés 239 Date d'inscription   Statut Membre Dernière intervention   -  
SaM SonG Messages postés 239 Date d'inscription   Statut Membre Dernière intervention   -
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. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
  2. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
    0
  3. SaM SonG Messages postés 239 Date d'inscription   Statut Membre Dernière intervention   5
     
    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
    0
  4. SaM SonG Messages postés 239 Date d'inscription   Statut Membre Dernière intervention   5
     
    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
    0