Faire suivre session dans affichage par page

francdrum Messages postés 874 Statut Membre -  
francdrum Messages postés 874 Statut Membre -
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 :-)
A voir également:

10 réponses

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
francdrum Messages postés 874 Statut Membre 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
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
francdrum Messages postés 874 Statut Membre 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

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

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

J'avais mal compris ta question.
0
francdrum Messages postés 874 Statut Membre 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
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
francdrum Messages postés 874 Statut Membre 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
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
francdrum Messages postés 874 Statut Membre 48
 
Mille merci pour ton aide :-)
J'essaie ça dès que retour chez moi
@++
0