PB d'affichage avec session active/inactive

Résolu/Fermé
SaM SonG Messages postés 239 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 21 novembre 2013 - Modifié par SaM SonG le 11/03/2013 à 20:10
SaM SonG Messages postés 239 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 21 novembre 2013 - 11 mars 2013 à 22:30
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

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 mars 2013 à 21:30
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
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 mars 2013 à 20:52
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
SaM SonG Messages postés 239 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 21 novembre 2013 5
11 mars 2013 à 20:55
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
SaM SonG Messages postés 239 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 21 novembre 2013 5
Modifié par SaM SonG le 11/03/2013 à 22:50
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