Perte des variables de sessions
Bonjour,
alors mon problème est dans le titre, tout simplement !
Maintenant je vais vous exposer mes sources au cas où vous y descelleriez une grossière erreur ....
Voici ma page principale :
Elle contient une partie login qui me servira pour la connexion au site.
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| <?php
session_start();
?>
<html>
<?php Require_once('./fonctions/connexion.php'); ?>
<link rel="stylesheet" type="text/css" href="style/common.css">
<body>
<head>
<title>SVS - Accueil</title>
</head>
<center>
<div id="site">
<div id="bandeau">
<?php include('./common/bandeau.php'); ?>
</div>
<div id="gauche">
<div id="login">
<?php include('./common/login.php'); ?>
</div>
<div id="menu">
<?php include('./common/menu.php'); ?>
</div>
</div>
<div id="contenu">
<div><br><b>Bienvenue sur le site du Saint-Vallier Sportif RUGBY !</b></div>
<div><?php include('./actualites/index.php'); ?></div>
</div>
<div id="droit">
<div id="shootbox">
<?php include('./common/shootbox.php'); ?>
</div>
<div id="encarts">
<?php include('./common/encarts.php'); ?>
</div>
</div>
<div id="footer">
<?php include('./common/footer.php'); ?>
</div>
</div>
</center>
</body>
</html> |
Voici le code de la partie login :
Il s'agit d'un simple formulaire php (si on est loggé, affichage des identifiants, sinon affichage du formulaire)
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
| <fieldset>
<legend>Accès membres</legend>
<?php
if(!isset($_SESSION['logged']) || $_SESSION['logged'] == "KO") { ?>
<form method="post" action="./fonctions/login.php">
<div>
<table>
<tr>
<td><input name="user" type="text" size="15px" value="Utilisateur"/></td>
</tr>
<tr>
<td><input name="pass" type="password" size="15px" value="Mot de passe"/></td>
</tr>
</table>
</div>
<div style="margin-top:5px;" align="center">
<input type="submit" value="S'enregistrer"/>
</div>
</form>
<?php } elseif($_SESSION['logged'] = "OK") {
echo "<div>";
echo "<table><tr>";
echo "<td>".$_SESSION['user']."</td>";
echo "</tr><tr>";
echo "<td>".$_SESSION['droit']."</td>";
echo "</tr><tr>";
echo "<td><form method='post' action='./fonctions/unlog.php'><input type='submit' value='Se déconnecter'/></form></td>";
echo "</tr></table>";
echo "</div>";
} ?>
</fieldset> |
Voici maintenant les sources de ma fonction de login appelé lors de la soumission du formulaire :
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
| <?php
Require_once('./connexion.php');
connexion();
$result = request('SELECT id_user, login_user, pwd_user, droit_user FROM users WHERE login_user = MD5("'.$_POST["user"].'") AND pwd_user = MD5("'.$_POST["pass"].'")');
$row = mysql_fetch_row($result);
if($row[0] != null){
$_SESSION['logged'] = "OK" ;
$_SESSION['user'] = $_POST["user"];
if($row[3] == "U"){
$_SESSION['droit'] = "Utilisateur simple";
} elseif($row[3] == "A") {
$_SESSION['droit'] = "Administrateur";
}
}
else{
$_SESSION['logged'] = "KO";
}
close_connexion();
header("Location: ".$_SERVER['HTTP_REFERER']);
?> |
Tout à la fin, on recharge donc la page d'accueil qui contient le formulaire de login qui devrait détecter la variable de session et donc afficher les identifiants de l'utilisateur !
Mais non, c'est le formulaire de login qui s'affiche car la variable de session "logged" est absente ...
(J'ai fait un test et juste avant le header("Location: ".$_SERVER['HTTP_REFERER']);, j'ai bien toutes les variables de session renseigné correctement ...)
Je vous remercie d'avance pour l'aide et les conseils que vous m'apporterez !
Bizoo à tous !