begin process at 2010 03 21 01:03:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

POO

 > 

Autre

 > 

Perte de session avec lien href


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Perte de session avec lien href

lundi 2 juin 2008 à 09:24:52 | Perte de session avec lien href

forcels

Voila,

je réalise actuellement un site web php permettant de gérer l'administration d'un club de ski dans le cadre de mon projet de fin d'études.

Je bloque sur un soucis de session depuis quelques jours. J'ai passer des heures à rechercher sur google une solutions, en vain...

Mon problème est le suivant:
Lorsque l'utilisateur arrive sur mon site, il doit s'authentifier. Sur authentification réussie, je démarre la session et je définis une variable ($_SESSION['autorise'] = 'oui') que je teste sur les pages.
J'arrive à entrer sur la page d'administration (admin.php). Mais, ensuite, lorsque je clique sur un lien de mon menu (lien <a href>), je perds la session... :'(

Je n'arrive pas à trouver comment faire pour que ma session reste ouverte.


Le code de ma page login.php

<div id="login">
        <form action="../php/gestionCompte.php" method="post">
          <table>
            <tr>
              <td>Nom d'utilisateur</td>
              <td><input type="text" name="nomUtilisateur" /></td>
            </tr>
            <tr>
              <td>Mot de passe</td>
              <td><input type="password" name="motPasse" /></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td><input type="submit" name="action" value="Se connecter" /></td>
            </tr>
            <tr>
              <td>
                <a class="lienEcritPetit" href="perduMotPasse.html">Mot de passe perdu?</a>
              </td>
              <td><a class="lienEcritPetit" href="creerCompte.php">S'inscrire</a></td>
            </tr>
          </table>
       </form>
      </div>


Le bout de code qui contrôle le login (gestionCompte.php):

// Test si tous les champs du formulaire ont été remplis
  if(($_POST['nomUtilisateur'] && $_POST['motPasse']) != null) {
    // Préparation de la requête pour rechercher si le login existe
    $rechercheUtilisateur  = 'SELECT PK_LOGIN FROM T_LOGIN ';
    $rechercheUtilisateur .= 'WHERE NOMUTILISATEUR="'.$_POST['nomUtilisateur'];
    $rechercheUtilisateur .= '" AND MOTDEPASSE=MD5("'.$_POST['motPasse'].'")';
   
    include('db_open.php');
    $resultat = mysql_query($rechercheUtilisateur);
    $nbUtilisateurTrouve = mysql_num_rows($resultat);
   
    // Si le nombre d'utilisateur trouvé en base de données est
    // différent de 1 (pas de doublons possibles,
    // donc 1 ou 0 retourné)
    if($nbUtilisateurTrouve != 1) {
      include('db_close.php');
      $_SESSION['erreur'] = 'utilisateurIntrouvable';
      header('Location:../../index.php');
    }
    else {
      // Démarrage de la session
      session_start();
     
      // Définition de la variable du nom de l'utilisateur
      $_SESSION['username'] = $_POST['nomUtilisateur'];
      $_SESSION['autorise'] = 'oui';
     
      $pos = 0; // incrémentation dans le tableau $droitsAcces
      $droitsAcces = array(); // variable qui contiendra les droits de l'utilisateur
      $lesDroits = ''; // variable contenant la chaîne définissant les droits de l'utilisateur.
     
     
      // Requête pour retrouver les droits d'accès de l'utilisateur
      $droitsAccesUtilisateur  = 'SELECT FK_DROIT_ACCES FROM R_DROIT_ACCES_LOGIN ';
      $droitsAccesUtilisateur .= 'INNER JOIN T_LOGIN ON PK_LOGIN = FK_LOGIN ';
      $droitsAccesUtilisateur .= 'WHERE NOMUTILISATEUR="'.$_POST['nomUtilisateur'].'"';
      $droitsAccesUtilisateur .= 'ORDER BY FK_DROIT_ACCES ASC';

      // Exécution de la requête
      $resultat =  mysql_query($droitsAccesUtilisateur) or die (mysql_error());
     
      // Récupération des droits d'accès dans la variable $droitsAcces
      while($enregistrement = mysql_fetch_assoc($resultat)) {
        $droitsAcces[$pos] = $enregistrement['FK_DROIT_ACCES'];
        $pos++;
      }
     
      // Fermeture de la base de données
      include('db_close.php');
     
      for($i = 0; $i < sizeof($droitsAcces); $i++) {
        $lesDroits .= $droitsAcces[$i];
      }
     
      // Appel du bon menu
      $_SESSION['droits'] = $lesDroits;
      include('../pages/admin.php');
      //header('Location:../pages/admin.php');
     
      }  
  }


Ma page admin.php

<?php
  if(isset($_SESSION['autorise'])) {
        $acces = $_SESSION['autorise'];
       
        if($acces != 'oui') {
            include('../index.php');
        }
    }
 
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="../../css/screen.css" />
<title>Esaho-ski Admin</title>
</head>

<body>
  <div id="page">
    <div id="entete"></div>
    <div id="menu">
      <h3>Menu</h3>
      <p><a href="../pages/admin.php">Accueil</a></p>
    </div>
    <div id="contenu">
      <h1>Gestion des membres et des activités d'un ski club</h1>
      <?php
        echo $_SESSION['autorise'];
      ?>
    </div>   
  </div>
  <div id="pied"></div>
</body>
</html>



Voila. Donc en cliquant sur le lien "Accueil", je dois revenir sur la même page. Mais là, je suis redirigée vers la page de login, car il me perd la session...

Quelqu'un aurait une idée ?

Je vous remercie d'avance pour votre aide.

forcels

lundi 2 juin 2008 à 09:39:26 | Re : Perte de session avec lien href

putch

salut !

tu ne "perd" pas la session, tu ne la recupere pas...

session_start();
en debut de chaque page

cf : [ Lien ]

++
lundi 2 juin 2008 à 11:09:26 | Re : Perte de session avec lien href

forcels

Hello,

j'ai modifié mes liens href en leur mettant, par exemple admin.php?nom_session=id_session.
Ensuite, dans la page ayant besoin de la session, j'ai testé si je trouvais nom_session dans l'url et si c'est le cas, je fais un session_start().

Ceci fonctionne. Par contre, lors de la déconnexion, j'enlève la variable $_SESSION['autorise'] (que j'utilise pour tester si l'utilisateur a le droit d'accéder) et j'affiche la page d'accueil.
Ensuite, j'arrive sans autre à revenir sur la page admin.php en modifiant l'url !!

Je n'ai des session_start() uniquement sur la première page du site, puis aux endroits où je passe l'id de session par l'url et que je la récupère.
Est-ce dû au fait que j'ai plusieurs session_start() et qu'il ne me les enlève pas vraiment ?

Quelqu'un aurait une idée pour résoudre ce problème ?

Ma page deconnexion.php
<?php
    if(isset($_GET['PHPSESSID'])) {
      session_start();
    }
    unset($_SESSION['username']);
    unset($_SESSION['autorise']);
    session_unset();
    session_destroy();
    echo $_SESSION['autorise']; // m'indique que l'index autorise n'est pas trouvé, mais me dit pas que la session n'est pas trouvée...
   
    header('Location:../../index.php');
?>



Merci d'avance pour vos réponses!

forcels

lundi 2 juin 2008 à 16:50:41 | Re : Perte de session avec lien href

coucou747

salut

remplace

if(isset($_GET['PHPSESSID'])) {
      session_start();
    }

par

if(isset($_GET['PHPSESSID'])) {
      session_start($_GET['PHPSESSID']);
    }


Cette discussion est classée dans : php, login, utilisateur, session, post


Répondre à ce message

Sujets en rapport avec ce message

Erreur lors de l'utilisation de sessions [ par auremy ] Bonjour,Je fais un site avec une partie réservé aux membres, ce qui nécessite donc une identification. Ayant regardé les messages à ce sujet, je n'ai url non desiré apres un precedent sur le navigateur [ par vbmarh ] bonjours j ai un script qui use des session pour une zone membre une pge connect2.php qui gere les post login mdp vers une page membre.php voici conne utilisation des sessions [ par ralinis ] Salu a tous.jai un problème avec les sessions en php.d'abord j'ai activer les parametre a on donc le problème ne se pose pas.le code est le suivant:++ Problème d'authentification [ par rasengan7 ] Bonjour j'aurai aimé savoir comment mettre des input type tout en regardant si le login et le pass sont bon. voici mon code: ?> <form lien Html dans un IF en PHP [ par nutty91 ] bonjour, j'ai sur une page php avec Session un lien htm de typer j'ai donc fait un If en controlant les variable de session ( lo Passer de variable avec HEADER() [ par chapata ] Hello ,voilà, j'ai un fichier "secure.php" qui vérifie s'il y a session ouverte sur le login, sinon redirige vers la page de login.php<b [php] petit probleme !! [ par dekovince ] bonjour a tous !!alors voila, je m explique :Un formulaire, une basse de donnee avec une table, et dans cette table un champs qui se nomme compteur !! login [ par azizmatta ] hi i have a problem with this code that let users login to the site.[code]session_start();include('database.php');if (!isset($_SESSION['logged'])) $_S login [ par azizmatta ] ca c'est le code pou la connexion des membres au site. mais quand je fais entrer un valide  username   and   password   ca me donne " Error : wrong u probleme de session sous easyphp-1.8 [ par mizoguchi ] salut à tous,j'ai un gros souci de session, aprés authentification de user par l'id et le mot de passe. s'ouvre à ce dernier une session dans la page


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales