Problême avec les cookies de session
Résolu
Bonjour,
voilà le code que j'ai mis dans mon site, quand j'entre des bonnes valeurs dans les champs login et mdp, je tombe bien sur une page "vous êtes loggé " mais dès que je réactualise la page, le cookie a disparu.
Pouvez vous me dire pourquoi ( apperement il y a une histoire de session-start).
<?php
$db_host="mysql5-1"; // PARAMETERS OF THE DB
$db_user="*******";
$db_pass="*********";
$database="********";
$IP=$_SERVER["REMOTE_ADDR"];
//echo 'La variable $_POST["pass"] vaut '.$_POST["pass"].'<br/>';
if (isset($_POST["pass"])) // If the login form has been submitted, let's check in the DB...
{
mysql_connect($db_host,$db_user,$db_pass) or die("Unable to connect to database");
mysql_select_db($database) or die( "Unable to select database");
$login=htmlentities($_POST["login"], ENT_QUOTES);
// $pass=htmlentities($_POST["pass"], ENT_QUOTES); // note : you can add MD5 password encryption support easily by replacing this with "=md5($_POST['pass'])"
$pass=md5($_POST['pass']);
$resultat=mysql_query("SELECT id,pass FROM members WHERE nom ='".$nom."';");
// echo '$_POST["login"]:'.$_POST["login"].'|$_POST["pass"]:'.$_POST['pass'];
if($ligne = mysql_fetch_array ($resultat))
{
$id=$ligne["id"];
// Checks in the failed logins database
$bantime=time()-600; // delay before new login chance
mysql_query("DELETE FROM logins_f WHERE time<$bantime"); // deletes records older than 1 day
$res3=mysql_query("SELECT count(*) FROM members WHERE (id='".$id."' AND IP='".$IP."');");
if(!($lig3=mysql_fetch_row($res3))) die('Error connecting to the database, please try again');
if($lig3[0]>=3)echo 'Too many failed attempts, account and IP locked for 10 minutes.<br/>'; // If too many failed attempts
else
{
if(($ligne['pass']==$pass) && ($ligne['pass']!=''))
{
$_SESSION["uname"] = $nom;
if(isset($_POST["IPsec"]))$_SESSION["IP"]=$IP;
else $_SESSION["IP"]="no";
}
else
{
mysql_query("INSERT INTO members SET id='".$id."',time='".time()."',IP='".$IP."'"); // Insert into failed logins db
echo 'Wrong password !<br/>';
}
}
}
else echo 'Wrong login or password.<br/>';
mysql_close();
}
if (!isset($_SESSION["uname"])) // If no session is set, let's show the login form
{
session_destroy();
echo ' Connectez vous :<br/><form action="" method="post">
<div>
<label for="nom">Login</label> : <input type="text" name="nom" id="nom" size="20" value="" /><br/>
<label for="pass"> Pass</label> : <input type="password" name="pass" id="pass" size="20" /><br/>
<input type="checkbox" name="IPsec" id="IPsec" checked="checked" /> <label for="IPsec">Use IP session lock</label><br/>
<input type="submit" value=" Log in " />
</div>
</form>';
}
else if(isset($_GET["log"]) && $_GET["log"]=="logout") // If the user clicked on log out, we... log them out...
{
session_destroy();
echo 'You are now logged out. <a href="">Click here to log in</a>.<br/>';
$bug_fix=1;
}
else if($_SESSION["IP"]!="no" && $_SESSION["IP"]!=$IP) // IP security : if wrong IP for this session
{
session_destroy();
echo 'You have been kicked by the IP security. <a href="'.$_SERVER["PHP_SELF"].'">Click here to log in again</a>.<br/>';
$bug_fix=1;
}
if (isset($_SESSION["uname"]) && !isset($bug_fix))
{
echo 'Welcome '.$_SESSION["uname"].' ! <a href="'.$_SERVER["PHP_SELF"].'?log=logout">Click here to log out</a>.<br/>'; // If the user is connected, a little message + the logout link (always cool to find it easily)
}
?>
voilà le code que j'ai mis dans mon site, quand j'entre des bonnes valeurs dans les champs login et mdp, je tombe bien sur une page "vous êtes loggé " mais dès que je réactualise la page, le cookie a disparu.
Pouvez vous me dire pourquoi ( apperement il y a une histoire de session-start).
<?php
$db_host="mysql5-1"; // PARAMETERS OF THE DB
$db_user="*******";
$db_pass="*********";
$database="********";
$IP=$_SERVER["REMOTE_ADDR"];
//echo 'La variable $_POST["pass"] vaut '.$_POST["pass"].'<br/>';
if (isset($_POST["pass"])) // If the login form has been submitted, let's check in the DB...
{
mysql_connect($db_host,$db_user,$db_pass) or die("Unable to connect to database");
mysql_select_db($database) or die( "Unable to select database");
$login=htmlentities($_POST["login"], ENT_QUOTES);
// $pass=htmlentities($_POST["pass"], ENT_QUOTES); // note : you can add MD5 password encryption support easily by replacing this with "=md5($_POST['pass'])"
$pass=md5($_POST['pass']);
$resultat=mysql_query("SELECT id,pass FROM members WHERE nom ='".$nom."';");
// echo '$_POST["login"]:'.$_POST["login"].'|$_POST["pass"]:'.$_POST['pass'];
if($ligne = mysql_fetch_array ($resultat))
{
$id=$ligne["id"];
// Checks in the failed logins database
$bantime=time()-600; // delay before new login chance
mysql_query("DELETE FROM logins_f WHERE time<$bantime"); // deletes records older than 1 day
$res3=mysql_query("SELECT count(*) FROM members WHERE (id='".$id."' AND IP='".$IP."');");
if(!($lig3=mysql_fetch_row($res3))) die('Error connecting to the database, please try again');
if($lig3[0]>=3)echo 'Too many failed attempts, account and IP locked for 10 minutes.<br/>'; // If too many failed attempts
else
{
if(($ligne['pass']==$pass) && ($ligne['pass']!=''))
{
$_SESSION["uname"] = $nom;
if(isset($_POST["IPsec"]))$_SESSION["IP"]=$IP;
else $_SESSION["IP"]="no";
}
else
{
mysql_query("INSERT INTO members SET id='".$id."',time='".time()."',IP='".$IP."'"); // Insert into failed logins db
echo 'Wrong password !<br/>';
}
}
}
else echo 'Wrong login or password.<br/>';
mysql_close();
}
if (!isset($_SESSION["uname"])) // If no session is set, let's show the login form
{
session_destroy();
echo ' Connectez vous :<br/><form action="" method="post">
<div>
<label for="nom">Login</label> : <input type="text" name="nom" id="nom" size="20" value="" /><br/>
<label for="pass"> Pass</label> : <input type="password" name="pass" id="pass" size="20" /><br/>
<input type="checkbox" name="IPsec" id="IPsec" checked="checked" /> <label for="IPsec">Use IP session lock</label><br/>
<input type="submit" value=" Log in " />
</div>
</form>';
}
else if(isset($_GET["log"]) && $_GET["log"]=="logout") // If the user clicked on log out, we... log them out...
{
session_destroy();
echo 'You are now logged out. <a href="">Click here to log in</a>.<br/>';
$bug_fix=1;
}
else if($_SESSION["IP"]!="no" && $_SESSION["IP"]!=$IP) // IP security : if wrong IP for this session
{
session_destroy();
echo 'You have been kicked by the IP security. <a href="'.$_SERVER["PHP_SELF"].'">Click here to log in again</a>.<br/>';
$bug_fix=1;
}
if (isset($_SESSION["uname"]) && !isset($bug_fix))
{
echo 'Welcome '.$_SESSION["uname"].' ! <a href="'.$_SERVER["PHP_SELF"].'?log=logout">Click here to log out</a>.<br/>'; // If the user is connected, a little message + the logout link (always cool to find it easily)
}
?>
Configuration: Windows XP Firefox 2.0.0.6