Ola,
Je sèche complétement sur un pbl de session, arghhhhhhh, si quelqu'un peut m'aider...
En fait quand je reviens sur la première page, il me recharge toujours le menulogin.php alors qu'une authentification a été faite, humm...
voici le code de la première page :
Code :
- <?php
- // initialisation de la session
- session_start() ;
- ?>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml/DTD/XHTML1-STRICT.DTD3>
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
- <meta http-equiv="pragma" content="no-cache" />
- <style type="text/css">
- @import url(styles/design.css);
- </style>
- <title>Document sans nom</title>
- </head>
- <body>
- <div id="menu">
- <?php
- if (!isset($_SESSION['login'])) {
- include "menulogin.php";
- }
- if (isset($_SESSION['rights'])) {
- if($_SESSION['rights'][0])
- print '<li><input type="submit" name="compte" value="Gestion Utilisateur" onClick="document.menu.submit()" ></li>';
- }
- ?>
- </div>
- <div id="global">
- <?php
- if (!isset($_GET['page'])) $page= 'accueil';
- else $page= $_GET['page'];
- switch($page)
- {
- case 'accueil' :include ('accueil.php');break;
- case 'verif' :include ('verif.php');break;
- case 'adduser' :include ('adduser.php');break;
- }
- ?>
- </div>
- </body>
- </html>
|
et voici le code de la page qui valide l'ouverture de session :
Code :
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml/DTD/XHTML1-STRICT.DTD3>
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
- <meta http-equiv="pragma" content="no-cache" />
- <style type="text/css">
- @import url(styles/design.css);
- </style>
- <title>Document sans nom</title>
- </head>
- <?php
- // Charge les fonctions d'accès MySQL
- require "definitions.inc.php";
- require "MySQL.php";
- // si on a reçu les données d'un formulaire :
- if (!empty($_POST['login']) && !empty( $_POST['password'] )) {
- // on les récupère
- $login = $_POST['login'] ;
- $password = $_POST['password'] ;
- // on teste si le mot de passe est valide + si le compte est actif :
- if($_SESSION['rights']=verification($login,$password)) {
- // on sauvegarde donc son nom dans la session
- $_SESSION['login'] = $login ;
- $message = 'vous êtes correctement identifié';
- $message .='<a href="index.php">retour</a>';
- } else {
- // sinon on revient à la page principale :
- $message ='<a href="index.php">retour</a>' ;
- }
- } else {
- // un des champs n'est pas rempli
- $message = 'le login ou le mot de passe est vide ' ;
- $message .='<a href="index.php">retour</a>' ;
- }
- function verification($login,$password){
- $returnRights='';
- // Connexion SQL
- $serveur=ConnectHOST(FALSE);
- if($serveur) {
- mysql_query('USE '.BASE,$serveur); }
- else {
- echo 'Error : ' . mysql_error() . "\n"; }
- // Création de la requête SQL
- $login_sql = mysql_real_escape_string($login) ;
- $password_sql = mysql_real_escape_string($password) ;
- $sql ="SELECT * FROM PERSONNE "." WHERE LOGIN='$login_sql' AND PASSWORD='$password_sql'" ;
- // Exécution de la requête SQL
- $result = mysql_query($sql,$serveur);
- if($data=mysql_fetch_object($result)) {
- // On vérifie si le compte est actif
- if($data->ACTIVATION) {
- // On récupère les droits
- $returnRights[]=$data->DROITRESERVATION;
- $returnRights[]=$data->DROITCOMPTE;
- $returnRights[]=$data->DROITRESSOURCE;
- }
- else echo 'Votre compte n\'est pas activé';
- } else{
- echo 'Mauvais mot de passe ';
- }
- return $returnRights;
- }
- function getActivate($login,$password){
- }
- ?>
- <body>
- <div id="global">
- <p>
- <?php echo $message ?>
- </p>
- </div>
- <body>
- </body>
- </html>
|
Voilà, j'ai bien le message envoyé par
Code :
- $message = 'vous êtes correctement identifié';
- $message .='<a href="index.php">retour</a>';
|
mais quand je reviens sur index.php (la première page), il me réaffiche le menu, alors que j'ai ce code là qui devrait m'afficher un autre choix :
Code :
- <?php
- if (!isset($_SESSION['login'])) {
- include "menulogin.php";
- }
- if (isset($_SESSION['rights'])) {
- if($_SESSION['rights'][0])
- print '<li><input type="submit" name="compte" value="Gestion Utilisateur" onClick="document.menu.submit()" ></li>';
- }
- ?>
|
Et j'ai bien vérifié, dans la page verif.php, $_SESSION['rights'][0] contient bien 1. Par contre dans index.php, $_SESSION['login'] et $_SESSION['rights'] ne sont plus connues...
Laurent
Message édité par laurent_31 le 21-11-2005 à 13:30:37