Faire suivre session php (affichage par page)

francdrum Messages postés 853 Date d'inscription   Statut Membre Dernière intervention   -  
francdrum Messages postés 853 Date d'inscription   Statut Membre Dernière intervention   -
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 :-)
A voir également:

6 réponses

kryoportail Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   125
 
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
francdrum Messages postés 853 Date d'inscription   Statut Membre Dernière intervention   48
 
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
kryoportail Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   125
 
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
francdrum Messages postés 853 Date d'inscription   Statut Membre Dernière intervention   48
 
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
kryoportail Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   125
 
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
francdrum Messages postés 853 Date d'inscription   Statut Membre Dernière intervention   48
 
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
kryoportail Messages postés 222 Date d'inscription   Statut Membre Dernière intervention   125
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
francdrum Messages postés 853 Date d'inscription   Statut Membre Dernière intervention   48
 
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
francdrum Messages postés 853 Date d'inscription   Statut Membre Dernière intervention   48
 
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