Faire suivre session php (affichage par page)

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, 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 er mor
Configuration: Ubuntu, en principe à jour ;-)

6 réponses

  1. Re,

    Normalement pour récupérer une session, ou en démarrer une, il faut mettre la commande 'session_start();' avant d'utiliser un objet stocké en session...

    Donc normalement, à chaque page qui utilise un objet session tu dois avoir le session_start !...
    cf: https://www.php.net/session_start

    Etant donné que généralement l'identifiant est stocké dans un cookie, il faut evidement que le navigateur accepte les cookies.... et que ceux-ci ne soit pas supprimer...

    Autre indication.. si une session n'est pas récupéré pendant un certain temps (chargement de page, généralement 30 minutes), la session est détruite sur le serveur, et donc la session et ce qu'elle contenait est perdue !

    Amicalement,
    S@M...
    http://kryoportail.ath.cx
    0
    1. Merci pour ta réponse :-)
      Et pour ce lien qui parait très intéressant, même si je suis (aussi ...) une bille en anglais ^_^
      J'ai bien ça, au tout début, en effet

      Je donne le début du code, jusqu'au "else", si ça peut aider

      <?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 (les liens sont d&eacute;sactiv&eacute;s)<br>Merci de r&eacute;-essayer</b><br>Ceci dit, vous pouvez toujours y jeter un oeil ;-)</p>';
          include('form.php'); 
          exit;
        }
        else {
      
          $_SESSION['login'] = $login;
      
          echo 'Vous etes bien logu&eacute; <b><u>'.$login.'</u></b>';
      
      etc, etc, etc
      
      


      Merci :-)

      EDIT : Ayant mis des vérifs pour le formulaire, il ne m'affiche pas que je suis pas loggé, mais que j'ai oublié de remplir un champ
      0
      1. Re,

        Je pense que tu tais un peu pommé dans les tests...
        le principe :
        <?php
        
        session_start();
        
        if( isset($_SESSION['login']) )
        {
        // L'utilisateur est connecté... on peut afficher un contenu, ou faire une action protégé
        }
        elseif( isset($_POST['login']) && isset($_POST['pass']) && !empty($_POST['login']) && !empty($_POST['pass']) )
        {
        // L'utilisateur n'est pas connecté mais il vient de valider le formulaire
              if( testmotdepassereussi )
              {
                   // authentification réussie
                   $_SESSION['login'] = $login
                   // on peut recharger la pageici,  pour afficher un contenu protégé, ou rediriger vers une page protégé (attention qui elle meme teste si il a bien été authentifié !!!!)...
              }
              else
             {
                  // authentification échouée
             }
        }
        else
        {
        // L'utilisateur n'est pas connecté, on affiche un contenu public et le formulaire d'authentification...
        }
        
        ?>


        Pour résumer :
        1. On teste si l'utilisateur est déjà connecté
        2. Si il ne l'est pas et si il a validé le formulaire, il faut tenter de l'authentifier...
        2.1 Si l'authentification est réussie, il faut mettre un flag (indicateur, drapeau) en session pour "se rappeler" qu'il est connecté !
        3. Dans les autres cas, on affiche un contenu non protégé, ou on affiche, ou on le redirige sur un formulaire d'authentification...

        Amicalement,
        S@M...
        0
    2. Merci
      C'est un bout de code que j'ai trouvé chez phpdebutant.org
      Pourtant ça a l'air sérieux ce site ... :-)

      Bon, je vais essayer d'adapter tout ça
      Quand je pense que j'avais dans l'idée de me mettre à l'aise avec les sessions, et d'adapter ça pour faire suivre celles de mon forum (simplemachines, enfin SMF) ...
      D'après ce que j'ai compris avec eux, il faut faire suivre des choses comme :
      $context['user']['name'], $context['user']['is_logged'], $context|'user']['is_guest']

      Vu mon niveau, je sais pas si je vais continuer dans cette optique :-(
      0
      1. Salut,

        Béh faut savoir être un peu persévérant...

        Un "bout de code" ne demande qu'a être compris, et adapté à ses besoins...
        C'est généralement pour cette raison qu'il a été mis en ligne !

        Amicalement,
        S@M...
        0
    3. Héhé, vi ! ça, suis persévérant ;-)
      C'est un affichage de partitions fait avec tout un tas de "bouts" que j'ai arrangés ensembles
      Je sais pas si je peux, mais je te donne le lien de mon test :
      http://www.web-zik.net/index.php?page=form
      Essaie d'abord n'importe quoi comme loggin, et le bon : "toto", pass : "tutu"
      Ca c'est avec ce que j'avais mis
      Par contre avec ce que tu m'as donné, pour l'instant (snif) rien ne s'affiche
      Mais je continue ;-)
      0
      1. Re,

        Arghhh!
        Bah je ne suis pas infaillible...
        Il m'arrive de me tromper ! .... Comme tout le monde...

        Peut-être que d'autres pourront te proposer d'autres solutions...

        Amicalement,
        S@M...
        0
    4. Pô de soucis ;-)
      Je continue à bosser dessus
      Le pb, c'est que je ne sais pas comment faire pour qu'il affiche l'erreur ...
      Si ça se trouve, juste un ";"
      De toutes façons, il a l'air mieux "rangé". Une fois mis bien, ça doit être plus propre :-)
      0
      1. Au fait, petite idée :
        Mon premier script, il est dans ma page qui est incluse dans une frame php
        Donc, le session_start(); ne peut pas se trouver an début
        Ca ne peut pas venir de ça ?

        Mais bon, je vais quand meme pas le mettre dans mon header ou dans la page qui appelle les frames, si ?
        0