Problème de session non gardées
Bonjour,
J'utilise un système de sessions pour l'identification sur un site web, mais je perds mes infos de session. Je vous mets le code :
connexion.php (1ère page d'identification)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <form method="post" action="login.php">
<table>
<tr>
<td>Identifiant</td><td><input type="text" name="id" id="id" /></td>
</tr>
<tr>
<td>Password</td><td><input type="password" name="password" id="password" /></td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="submit" value="Connexion" />
</td>
</tr>
</table>
</form> |
login.php (2ème page qui crée la session)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <?php
@session_start();
$id = $_REQUEST["id"];
$password = $_REQUEST["password"];
require_once("connexion_bdd.php");
$req_identification = mysql_query("SELECT * FROM BD_USER WHERE ID = '".$id."' AND PASSWORD = '".$password."'");
if (mysql_num_rows($req_identification) == 0) {
$_SESSION['pk_user'] = '';
$_SESSION['id_user'] = '';
echo "<head><meta http-equiv='refresh' content='3;url=http://xxxxxx/connexion.php' /></head>";
echo "Identifiant ou mot de passe incorrect !";
} elseif (mysql_num_rows($req_identification) > 1) {
$_SESSION['pk_user'] = '';
$_SESSION['id_user'] = '';
echo "<head><meta http-equiv='refresh' content='3;url=http://xxxxxx/connexion.php' /></head>";
echo "Plus d'un utilisateur correspond à votre identifiant, merci de contacter l'administrateur !";
} else {
while($res_identification=mysql_fetch_array($req_identification)) {
$pk_user = $res_identification["PK_USER"];
$id_user = $res_identification["ID"];
}
$_SESSION['pk_user'] = $pk_user;
$_SESSION['id_user'] = $id_user;
echo "<head><meta http-equiv='refresh' content='3;url=http://xxxxxx/index.php' /></head>";
echo "<div align='center'>Bienvenue ".$_SESSION['id_user']." !</div>";
}
?> |
Jusque là, tout va bien, il m'affiche bien "Bienvenue Machin !" et me redirige vers la page d'accueil :
index.php (page d'accueil qui vérifie que le user est OK => Sinon retour à la page de connexion)
Code:
1 2 3 4 5 6 7 8 9 10 11
| <?php
@session_start();
if (empty($_SESSION['pk_user']) || empty($_SESSION['id_user'])) {
echo '<script language="javascript" type="text/javascript">window.alert("Session perdue !'.$_SESSION['id_user'].$_SESSION['pk_user'].'");window.location.replace("http://xxxxxx/connexion.php");</script>';
}
require_once('header.php');
[...]
?> |
Mais là il m'affiche la pop-up "Session perdue !" et retour à la page de connexion. Il n'a plus les variables de ma session...
Indice : Si je vire le @ devant session_start(), il me dit "Cannot send session cookie - headers already sent by ..."
Merci de votre (future) aide ;)