Bonjour , alors j'ai chercher sur notre ami google , mais au bout de 3 pages j'ai toujours la meme reponse :
il ne faut pas de code html avant session_start(); .Le probleme c'est que je ne met rien avant ca !
Voila mon login.php
<?php
mysql_connect("localhost","root","");
mysql_select_db("site") or die ("erreur");
session_start();
if(!isset($_SESSION['visiteur']))
{
$_SESSION['visiteur'] = 1;
}
if(isset($_POST['login'])&& isset($_POST['pass'])&& $_POST['login']!=null && $_POST['pass']!=null)
{
$pass = mysql_real_escape_string(htmlspecialchars($_POST['pass']));
$login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
$resultat=mysql_query("SELECT * FROM membre where login='$login' ") or die(mysql_error());
$donnees=mysql_fetch_array($resultat);
if($donnees['pass']!=$pass)
echo "Mauvais login-password";
else
{
$_SESSION['visiteur'] =0;
$_SESSION['login'] = $login;
$_SESSION['pass'] = $pass;
$_SESSION['admin'] = $donnees['admin'];
header("location:a.php") ;
}
}
else if($_SESSION['visiteur']==1)
{
echo '<form name="identification" action="a.php" method="post">
login : <input type="text" name="login" maxlength="25" size="25"><br>
pass : <input type="password" name="pass" size="20" maxlength="20"><br>
<input type="submit" value="S\'identifier">
</form>dezd';
}
else
{
echo 'bienvenue '.$_SESSION['login'];
echo'<br><a href="deco.php">deconnection</a>';
}
?>
deco.php
<?php
session_start();
session_unset() ;
session_destroy();
header("location:login.php") ;
?>
Lorsque je test directement login.php , le formulaire marche tres bien : si je rentre un mauvais pass , ca me connecte pas , si j'en rentre un bon , ca me marque bienvenue micka et un lien vers deco.php.Si je clique sur deco , ca me deco et je retourne sur login avec le formulaire.
Maintenant dans j'inclue login.php dans xhtml.php :
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Mon super site</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Exemple" href="css.css" />
</head>
<body>
<!-- L'en-tête -->
<div id="en_tete">
</div>
<!-- Les menus -->
<div id="menu">
<div class="element_menu">
<?php include("login.php");?>
</div>
<div class="element_menu">
<h3>Titre menu</h3>
<ul>
<li><a href="page4.html">Lien</a></li>
<li><a href="page5.html">Lien</a></li>
<li><a href="page6.html">Lien</a></li>
</ul>
</div>
</div>
<!-- Le corps -->
<div id="corps">
<? include("news.php"); ?>
</div>
<!-- Le pied de page -->
<div id="pied_de_page">
<p>aaaaaaa</p>
</div>
</body>
</html>
Si je rajoute session_start() en haut de xhtml.php et que je l'enleve de login , j'ai aucun message d'erreur , mais mon login ne marche plus , le formulaire se reafichant a chaque fois.Si je laisse le session_start dans login et que je rajoute dans xhtml j'ai :
Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\test\login.php on line 5.
Normal puisque il y a deja un session_start , par contre le login fonctionne!
Alors comment puis je faire ,pour ne pas avoir le message et que ca marche?
[edit] pour que le message ne s'affiche plus , j'ai mis un @ devan le session_start() du login.php ...
Mais malgres tout je ne comprend pas l'erreur , si quelqu'un peux m'eclairer ca serait gentil
