Faire suivre session dans affichage par page

francdrum Messages postés 858 Date d'inscription   Statut Membre Dernière intervention   -  
francdrum Messages postés 858 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Bonjour,
Je viens à ma grande surprise de réussir à faire un formulaire d'identification et afficher une page
Donc, non content de ça, je viens d'essayer d'insérer une page du site à l'intérieur de ce script.
Jusque là, tout va bien, elle s'affiche sans pb
Sauf que cette page est un script qui affiche des résultats d'une base sur plusieus pages, et quand je veux changer de page (1,2, suiv, préc), je reviens au formulaire de loggin
Faut y faire quoi à ça ?
Parce que je suis loin d'être un pro ... :-(
Merci d'avance :-)

--
Me zo ganet e-kreiz ar mor
Configuration: Ubuntu, en principe à jour ;-)

10 réponses

  1. benvii Messages postés 311 Statut Membre 137
     
    Avec les sessions regarde ici -> https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/913348-variables-superglobales#ss_part_2

    Une session te permet d'enregistrer des variables sur un utilisateur, qui sont accessibles sur toutes tes pages. PHP associe les sessions à un utilisateur grâce à un cookie ou une variable en GET ce que permet de reconnaître l'utilisateur. C'est hyper pratique.
    0
  2. francdrum Messages postés 858 Date d'inscription   Statut Membre Dernière intervention   48
     
    Merci pour ta réponse

    Comme mon niveau est loin d'être suffisant pour comparer des scripts, je te fais un 'tit copier/coller du mien.
    Résumé, mais ça doit suffir pour comprendre
    Mais c'est vrai que pour GET, je ne sais pas comment placer ça ... :-(
    Que ce soit pour récupérer le loggin ou le . session_id();
    Merci ;-)

    <?php
        session_start();
    
     include('config.inc.php'); 
    
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
      extract($_POST);
      // recupère le pass
      $sql = "select pwd from aaa_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 '<font face="Verdana, Arial, Helvetica, sans-serif" size="2">';
    echo '<p align="center"><b>Vous n\'&ecirc;tes pas identifi&eacute;, donc vous ne pouvez pas t&eacute;l&eacute;charger les partitions</b><br>(les liens sont d&eacute;sactiv&eacute;s)<br><b>Merci de r&eacute;-essayer</b><br>Ceci dit, vous pouvez toujours y jeter un oeil ;-)</p>';
        include('form.php'); 
    
    AFFICHAGE DE LA PAGE AVEC LES LIENS DESACTIVES
    
    
     @mysql_close(); 
    
    
    
        exit;
      }
    
    
    
      else {
    
        $_SESSION['login'] = $login;
    
        echo 'Vous etes bien logué <b><u>'.$login.'</u></b>';
    
    
    
    AFFICHAGE COMPLET DE LA PAGE
    
    
    
     @mysql_close(); 
    
    
    
      }
    }
    else {
      echo '<p>Vous avez oubli&eacute; de remplir un champ.</p>';
       include('form.php'); // On inclut le formulaire d'identification
       exit;
    }
    
    
    ?>
    

    0
  3. benvii Messages postés 311 Statut Membre 137
     
    Il faut que tu prennes en compte les session dans ta condition :
    Pour ta condition on peut être déjà connecté : quand $_SESSION['login'] est différent de null ou vide.
    Où tu essaye de te connecté : si les données du formulaire existent.
    <?php
        session_start();
    
     include('config.inc.php'); 
    
    if( (isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) || !empty($_SESSION['login'])) {
      extract($_POST);
      // recupère le pass
      $sql = "select pwd from aaa_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 '<font face="Verdana, Arial, Helvetica, sans-serif" size="2">';
    echo '<p align="center"><b>Vous n\'&ecirc;tes pas identifi&eacute;, donc vous ne pouvez pas t&eacute;l&eacute;charger les partitions</b><br>(les liens sont d&eacute;sactiv&eacute;s)<br><b>Merci de r&eacute;-essayer</b><br>Ceci dit, vous pouvez toujours y jeter un oeil ;-)</p>';
        include('form.php'); 
    
    AFFICHAGE DE LA PAGE AVEC LES LIENS DESACTIVES
    
    
     @mysql_close(); 
    
    
    
        exit;
      }
    
    
    
      else {
    
        $_SESSION['login'] = $login;
    
        echo 'Vous etes bien logué <b><u>'.$login.'</u></b>';
    
    
    
    AFFICHAGE COMPLET DE LA PAGE
    
    
    
     @mysql_close(); 
    
    
    
      }
    }
    else {
      echo '<p>Vous avez oubli&eacute; de remplir un champ.</p>';
       include('form.php'); // On inclut le formulaire d'identification
       exit;
    }
    
    
    ?>
    0
  4. francdrum Messages postés 858 Date d'inscription   Statut Membre Dernière intervention   48
     
    Heu ...
    Ca, c'est un bout de script que j'ai trouvé sur phpdebutant ...

    Comme j'ai dis, suis une vrai bille, donc quitte à m'enfoncer un peu plus (LOL), pour que on puisse passer d'une page à l'autre (vu qu'on arrive quand meme à une page), il ne faudrait pas mettre un truc du genre
    <?php
        session_start();
    
     $login = $_GET['login']; 

    en début de page ?

    Bon, arrétez de vous marrer !!! (re LOL)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. benvii Messages postés 311 Statut Membre 137
     
    Tu mets :
    <?
    session_start();
    $login=$_SESSION['login'];
    ?>

    J'avais mal compris ta question.
    0
  7. francdrum Messages postés 858 Date d'inscription   Statut Membre Dernière intervention   48
     
    Pô de pb ;-)
    Oui, bon ben j'ai meme rajouté ça :
    <?php
        session_start();
    
    $login=$_SESSION['login'];
    $pass=$_SESSION['pass'];
    

    Mais tjs pareil, j'ai bien la premiere page, et ensuite je me retrouve au loggin :-(

    Je sais pô si je peux ici, mais bon, je te donne le lien de ce test, si ça peut aider :
    (Loggin : toto, pass : tutu)
    Merci :-)
    0
  8. benvii Messages postés 311 Statut Membre 137
     
    Voila comment tu dois modifier ton script :
    <?php
        session_start();
    
     include('config.inc.php'); 
    
    if( (isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) || !empty($_SESSION['login'])) {
      if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))//L'utilisateur se connecte
      {	
      extract($_POST);
      // recupère le pass
      $sql = "select pwd from aaa_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 '<font face="Verdana, Arial, Helvetica, sans-serif" size="2">';
    echo '<p align="center"><b>Vous n\'&ecirc;tes pas identifi&eacute;, donc vous ne pouvez pas t&eacute;l&eacute;charger les partitions</b><br>(les liens sont d&eacute;sactiv&eacute;s)<br><b>Merci de r&eacute;-essayer</b><br>Ceci dit, vous pouvez toujours y jeter un oeil ;-)</p>';
        include('form.php'); 
    
    AFFICHAGE DE LA PAGE AVEC LES LIENS DESACTIVES
    
    
     @mysql_close(); 
    
    
       $_SESSION['login'] = $login;//On finalise la connection, puis on crée un session contenant le login
        exit;
      }
      }//Fin l'utilisateur est connecté
    
    
    
      else { //l'utilisateur est déjà connecté
    
        $login=$_SESSION['login'];//On attribue la session login à la variable login
    
        echo 'Vous etes bien logué <b><u>'.$login.'</u></b>';
    
    
    
    AFFICHAGE COMPLET DE LA PAGE
    
      }
    }
    else {
      echo '<p>Vous avez oubli&eacute; de remplir un champ.</p>';
       include('form.php'); // On inclut le formulaire d'identification
       exit;
    }
    
    
    ?>
    


    J'ai modifié pas mal de choses et je pense que c'est bon. Tu as deux cas l'utilisateur se connecte, et l'utilisateur est déjà connecté.
    0
  9. francdrum Messages postés 858 Date d'inscription   Statut Membre Dernière intervention   48
     
    Me voici de retour
    Suis musicien, je bosse le week-end :-)

    Encore merci pour ton aide
    Il y a un truc avec ce code ...
    La page reste blanche
    J'ai essayé de voir si il n'y avait pas un soucis de ; ou de }, mais je ne vois pas

    Mais je trouve bizarre, tu as mis " }//Fin l'utilisateur est connecté" à un endroit ou justement il ne l'est pas
    Ca ne viendrait pas de ça, une inversion dans le code aussi ?

    Merci :-)
    0
  10. benvii Messages postés 311 Statut Membre 137
     
    Bon j'ai fait un test sur mon serveur local avec le script suivant :
        session_start();
    
    // include('config.inc.php'); 
    
    if( (isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) || !empty($_SESSION['login'])) {
      if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))//L'utilisateur se connecte
      {	
      extract($_POST);
      // recupère le pass
      /*$sql = "select pwd from aaa_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 '<font face="Verdana, Arial, Helvetica, sans-serif" size="2">';
    echo '<p align="center"><b>Vous n\'&ecirc;tes pas identifi&eacute;, donc vous ne pouvez pas t&eacute;l&eacute;charger les partitions</b><br>(les liens sont d&eacute;sactiv&eacute;s)<br><b>Merci de r&eacute;-essayer</b><br>Ceci dit, vous pouvez toujours y jeter un oeil ;-)</p>';
        include('form.php'); 
    
    AFFICHAGE DE LA PAGE AVEC LES LIENS DESACTIVES
    
    
     @mysql_close(); 
    
    
       $_SESSION['login'] = $login;//On finalise la connection, puis on crée un session contenant le login
        exit;
      }*/
    	$_SESSION['login'] = $_POST['login'];//On finalise la connection, puis on crée un session contenant le login
    	echo "EXE IF 1";
      }//Fin l'utilisateur est connecté
    
    
    
      else { //l'utilisateur est déjà connecté
    
        $login=$_SESSION['login'];//On attribue la session login à la variable login
    
        echo 'Vous etes bien logué <b><u>'.$login.'</u></b>';
    
    
      }
    }
    else {
      echo '<p>Vous avez oubli&eacute; de remplir un champ.</p>';
       //include('form.php'); // On inclut le formulaire d'identification
       exit;
    }


    La condition ou "L'utilisateur se connecte" est bien exécutée quand je transmet les données login et pass en POST.
    Ensuite la session est bien créé avec login qui contient bien le login.

    Au niveau des conditions tout fonctionne, ainsi que de la création d'une session contenant login.

    Sinon, j'ai dù désactiver la requête SQL pour tester et j'ai aussi déplacé $_SESSION['login'] = .

    Enfin j'ai écrits "//Fin l'utilisateur est connecté" car quand la condition a finis de s'exécuté l'utilisateur est normalement connecté sauf si le mot de passe ou l'indentifiant étaient faux, j'aurais du mettre ce commentaire à la fin de la condition dù dessus ( if($data['pwd'] != $pass)).
    0
  11. francdrum Messages postés 858 Date d'inscription   Statut Membre Dernière intervention   48
     
    Mille merci pour ton aide :-)
    J'essaie ça dès que retour chez moi
    @++
    0