J'ai un problème de cookies. Je voudrais demander une authentification sur une page. Les login/mot de passe sont contenus dans une base mySQL:
base : base
table : membres
champs de la table : login et mdp.
Seulement, j'ai une erreur:
CITATION
Warning: Cannot modify header information - headers already sent by (output started at /var/www/tests/protection.php:13) in /var/www/tests/protection.php on line 57
Warning: Cannot modify header information - headers already sent by (output started at /var/www/tests/protection.php:13) in /var/www/tests/protection.php on line 58
Warning: Cannot modify header information - headers already sent by (output started at /var/www/tests/protection.php:13) in /var/www/tests/protection.php on line 58
et je ne vois pas du tout d'où elle vient...
Voici le code:
CODE
<?php
//Réception des infos entrées dans le forumaire
$motdepasseentre = @$_POST["pass"];
$login = @$_POST["login"];
echo $motdepasseentre;
echo "<br />";
echo $login;
//Connection
$mysql_id = mysql_connect('hote', 'login', 'motdepasse');
mysql_select_db('base', $mysql_id);
//Recherche du mot de passe correspondant au login entré
//Construction de la requète
$requete = "SELECT mdp FROM membres WHERE login='" . $login . "'";
echo "<br /> Requete : ";
echo $requete;
//Soumission de la requète à la base, et stockage du résultat dans la variable $result
$result = mysql_query($requete,$mysql_id);
//Mise en forme du résultat par PHP. La variable $membre contiendra le mot de passe de l'enregistrement trouvé.
$membre = mysql_fetch_object($result);
//Vidage de la variable pour désencombrer la mémoire
mysql_free_result($result);
//On vient d'aller chercher le mot de passe correspondant au login, il faut le comparer à celui entré dans le formulaire.
$bonmotdepasse = $membre->mdp;
echo "<br /> Mot de passe de la base de données : ";
echo $bonmotdepasse;
echo "<br /> Mot de passe entré dans le formulaire : ";
echo $motdepasseentre;
//Si les mots de passe correspondent, on met "ok" dans le cookie
if($bonmotdepasse==$motdepasseentre)
{
echo "<br /> Les mots de passe correspondent";
setcookie("passe","ok"); //LIGNE 50
Header("Location: ".$_SERVER["PHP_SELF"]); //LIGNE 51
}
//Sinon, on laisse le cookie vide
elseif($bonmotdepasse!=$motdepasseentre)
{
echo "<br /> Les mots de passe ne correspondent pas";
setcookie("passe",""); //LIGNE 57
Header("Location: ".$_SERVER["PHP_SELF"]); //LIGNE 58
}
//On lit le cookie
$isOK = (@$_COOKIE["passe"]!="");
//S'il n'est pas vide, on affiche le menu
if($isOK)
{
?>
<center>
<A href="?pass=no">Déconnecter</A> -
<A href="page1.php">Page 1</A> -
<A href="page2.php">Page 2</A> -
<A href="page3.php">Page 3</A>
</center><hr>
<?php
}
//S'il est vide, on affiche le formulaire
else
{
?>
<form method="post">
<table><tr>
<td><input type="password" name="pass"></td>
<td><input type="text" name="login"></td>
<td><input type="Submit" value="Entrer"></td>
</tr></table>
</form>
<?php
}
?>
//Réception des infos entrées dans le forumaire
$motdepasseentre = @$_POST["pass"];
$login = @$_POST["login"];
echo $motdepasseentre;
echo "<br />";
echo $login;
//Connection
$mysql_id = mysql_connect('hote', 'login', 'motdepasse');
mysql_select_db('base', $mysql_id);
//Recherche du mot de passe correspondant au login entré
//Construction de la requète
$requete = "SELECT mdp FROM membres WHERE login='" . $login . "'";
echo "<br /> Requete : ";
echo $requete;
//Soumission de la requète à la base, et stockage du résultat dans la variable $result
$result = mysql_query($requete,$mysql_id);
//Mise en forme du résultat par PHP. La variable $membre contiendra le mot de passe de l'enregistrement trouvé.
$membre = mysql_fetch_object($result);
//Vidage de la variable pour désencombrer la mémoire
mysql_free_result($result);
//On vient d'aller chercher le mot de passe correspondant au login, il faut le comparer à celui entré dans le formulaire.
$bonmotdepasse = $membre->mdp;
echo "<br /> Mot de passe de la base de données : ";
echo $bonmotdepasse;
echo "<br /> Mot de passe entré dans le formulaire : ";
echo $motdepasseentre;
//Si les mots de passe correspondent, on met "ok" dans le cookie
if($bonmotdepasse==$motdepasseentre)
{
echo "<br /> Les mots de passe correspondent";
setcookie("passe","ok"); //LIGNE 50
Header("Location: ".$_SERVER["PHP_SELF"]); //LIGNE 51
}
//Sinon, on laisse le cookie vide
elseif($bonmotdepasse!=$motdepasseentre)
{
echo "<br /> Les mots de passe ne correspondent pas";
setcookie("passe",""); //LIGNE 57
Header("Location: ".$_SERVER["PHP_SELF"]); //LIGNE 58
}
//On lit le cookie
$isOK = (@$_COOKIE["passe"]!="");
//S'il n'est pas vide, on affiche le menu
if($isOK)
{
?>
<center>
<A href="?pass=no">Déconnecter</A> -
<A href="page1.php">Page 1</A> -
<A href="page2.php">Page 2</A> -
<A href="page3.php">Page 3</A>
</center><hr>
<?php
}
//S'il est vide, on affiche le formulaire
else
{
?>
<form method="post">
<table><tr>
<td><input type="password" name="pass"></td>
<td><input type="text" name="login"></td>
<td><input type="Submit" value="Entrer"></td>
</tr></table>
</form>
<?php
}
?>
Merci beaucoup d'avance!
PS1: je suis débutant, je ne connais pas grand chose
PS2: Si je mets le bon mot de passe, l'erreur se trouve sur les lignes 50 et 51.
