Problême avec les cookies de session

Résolu/Fermé
gabs24 Messages postés 2 Date d'inscription lundi 24 décembre 2007 Statut Membre Dernière intervention 24 décembre 2007 - 24 déc. 2007 à 16:06
gabs24 Messages postés 2 Date d'inscription lundi 24 décembre 2007 Statut Membre Dernière intervention 24 décembre 2007 - 24 déc. 2007 à 18:52
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)
}
?>

2 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
24 déc. 2007 à 17:47
salut,

as-tu pensé à ouvrir la session ?
0
gabs24 Messages postés 2 Date d'inscription lundi 24 décembre 2007 Statut Membre Dernière intervention 24 décembre 2007
24 déc. 2007 à 18:52
Oui en effet, il suffisait d'ajouter un session-start et un header mais vraiment au tout début du script.
0