IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Page protégée par session


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 15
    Points
    15
    Par défaut Page protégée par session
    Bonjour,

    Voici mon soucis, j'ai fais ce code inspiré d'un tuto. L'objectif c'est de pouvoir protéger l'accès à certaines pages d'admin par exemple.

    J'ai voulu faire très simple.
    Dans une BDD j'ai mes log et pass qui autorise les sessions.
    Chaque page protégée vérifie si une session est ouverte. une session ne s'ouvre qu'en passant par une page de login et pass validée par une recherche dans la BDD.

    code de la page : afficher_bravo.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php 
    session_start();
     
    /*
    si la variable de session login n'existe pas cela siginifie que le visiteur
    n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
    acceder à l'espace membres
    */
    if(!isset($_SESSION['login'])) {
      echo 'Vous n\'êtes pas autoris´ à acceder à cette zone';
      include('login.htm');
      exit;
    }
    else {
    ?>
     
    	<?xml version="1.0" encoding="UTF-8"?>
    	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
    	<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-FR">
     
    	<html>
     
            <p> Bravo </p>
     
    	</html>
    <?php
    }
    ?>
    Et bien ce code ne fonctionne pas, il m'affiche toujours Bravo, même si je ne suis pas passé par la page de login et pass avant... donc c'est que le test ne fonctionne pas...

    mon fichier :login.htm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php 
    session_start();
    ?>
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-FR">
     
    <html>
     <form action="login.php" method='post'>
    <table align="center" border="0">
      <tr>
        <td>Login :</td>
        <td><input type="text" name="login" maxlength="250"></td>
      </tr>
      <tr>
        <td>Password :</td>
        <td><input type="password"name="pass" maxlength="10"></td>
      </tr>
      <tr>
        <td colspan="2" align="center"><input type="submit" value="log in"></td>
      </tr>
    </table>
    </form>
     
    </html>
    Mon fichier : login.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php 
    session_start();
    ?>
    <?
    // pensez a ouvrir une connexion vers mysql ici
    // voir les exercices dans le menu de droite pour cela.
    // on se connecte à MySQL
    $db = mysql_connect('localhost', 'root', '***');
     
    // on sélectionne la base
    mysql_select_db('ma_base',$db); 
     
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
      extract($_POST);
      // on recupère le password de la table qui correspond au login du visiteur
      $sql = "select pwd from tbl_user where login='".$login."'";
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
      $data = mysql_fetch_assoc($req);
     
      if($data['pwd'] != $pass) {
        echo '<p>Mauvais login / password. Merci de recommencer</p>';
        include('login.htm'); // On inclut le formulaire d'identification
        exit;
      }
      else {
        session_start();
        $_SESSION['login'] = $login;
     
        echo 'Vous etes bien logué';
        // ici vous pouvez afficher un lien pour renvoyer
        // vers la page d'accueil de votre espace membres
      }   
    }
    else {
      echo '<p>Vous avez oublié de remplir un champ.</p>';
       include('login.htm'); // On inclut le formulaire d'identification
       exit;
    }
     
     
    ?>

  2. #2
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Bonjour

    Je vois que dans ton fichier login.php tu as mis 2 session_start, le second n'est pas nécessaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
      else {
        session_start();
        $_SESSION['login'] = $login;
     
        echo 'Vous etes bien logué';
    ...
    Cela ne règlera peut être pas ton problème.

    Quitte tu ton navigateur entre deux essais ? Si tu fais un essai en te connectant, ta session restera active tant que ton navigateur restera ouvert.

    Fais un pour voir ce qui se trouve dans la session...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 33
    Points : 33
    Points
    33
    Par défaut
    Ou plutôt que quitter le navigateur faire une fonction killSession() qui détruira ta session ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function killSession() {
      session_start() ;
      //destruction de toutes les variable de sessions
      session_unset() ;
      //destruction de la session
      session_destroy() ;
      // au cas où il aurait des résidus
      $_SESSION = array();
    }

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/11/2014, 09h40
  2. Réponses: 1
    Dernier message: 07/04/2008, 10h51
  3. Réponses: 11
    Dernier message: 30/05/2007, 17h10
  4. Récupération du code d'une page protégée par htaccess
    Par Vedlen dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 11/07/2006, 14h37
  5. Récupération du code d'une page protégée par htaccess
    Par Vedlen dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 10/07/2006, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo