Problème de session: deconnexion.

Problème de session: deconnexion. - PHP - Programmation

Marsh Posté le 18-05-2008 à 17:36:56    

Bonjour à tous!
je suis débutante en PHP, je fait un projet avec l'univ, et donc on ne se préocuupe pas de sécurité pour l'instant.
 
voilà, j'ai des problèmes de connexion en rapport avec les sessions je pense.
 
voilà: J'ai une page internet index.php basée sur le même modèle que la page listeMP.php c'est à dire header-texte-footer.

Code :
  1. <?PHP require_once('00-header.php');
  2. echo "<H1> Bienvenue! </H1>";
  3. require_once('01-footer.php');
  4. ?>


 
voici ca a quoi ressemble l'header
 
00-header.php

Code :
  1. <?PHP
  2. require_once('03-login.php'); ?>
  3. <HTML>
  4. <HEAD>
  5. <link rel="stylesheet" href="site.css">
  6. <title> Marque-pages: Accueil </title>
  7. <META name="keywords" content="bookmark, favoris, marque page, marques-page">
  8. <META name="description" content="Site de partage de bookmarks">
  9. </HEAD>
  10. <!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------>
  11. <BODY>
  12. <DIV id="subtitle">
  13. <?PHP
  14. require_once('09-fonctions.php');
  15. $subtitle="Title";
  16. echo $subtitle;
  17. ?>
  18. </DIV>
  19. <!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------>
  20. <DIV id="left-menu">
  21. <?php
  22. $requete = 'SELECT login FROM Utilisateur';
  23. $resultat = mysql_query($requete,$conn) or die ("Erreur dans la requête ".$requete."<br>".mysql_error());
  24. while ($nuplet = mysql_fetch_assoc($resultat)) {
  25.   print "Un utilisateur: ".$nuplet['login'].'<br>';
  26. }
  27. If ($connect==false)
  28. {?>
  29. <form action="index.php" method="GET">
  30. <h3>Connexion</h3>
  31. <p>login: <input name="f_login" size="25" type="text"></p>
  32. <p>mot de passe: <input name="f_mdp" size="25" type="password"></p>
  33. <p><input type="submit" value="Se connecter"></p>
  34. </form>
  35. <?PHP
  36. ;}
  37. else
  38. {
  39. ?>
  40. <a href="listeMP.php" ><IMG src="images/B-listeMP.gif" border="0"></a>
  41. <BR>
  42. <p><a href="index.php?f_login=&f_mdp=">Déconnexion</a></p>
  43. <?PHP
  44. ;}
  45. echo $_SESSION['login']."<BR> b";
  46. echo $connect;
  47. if(isset($_SESSION['login']) && $_SESSION['login']!=NULL)
  48.      {
  49.      echo '<BR>Connecté';
  50.      $connect=true;
  51.      }
  52. else
  53.      {
  54.      echo '<BR>Non connecté';
  55.      $connect=false;
  56.      }
  57. ?>
  58. </DIV>
  59. <!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------>
  60. <DIV id="info">
  61. <A name=top></A>


 
 
donc, quand je me connecte une première fois, je retombe sur index.php connectée, j'ai accès aux variables de session et les lignes de test m'affichent connectée.
mais il suffit que je clique sur le lien vers listeMP.php pour que je sois déconnectée.
 
alors je sais pas ou est l'erreur même si je pense qu'elle est dans 03-login.php, sauf que j'arrive pas à trouver!!! j'ai essayer plein de choses mais à l'aveuglette ca marche pas!
 
Pourriez vous m'aider s'il vous plait?
 
03-login.php

Code :
  1. <?PHP
  2. session_start();
  3. $conn = mysql_connect('localhost:3307','lif4','mdplif4') or die ('Impossible de se conncter à MySQL: '.mysql_error());
  4. mysql_select_db('lif4',$conn) or die ('Impossible d\'aller sur la base lif4: '.mysql_error());
  5. $requete2 = mysql_query("SELECT login, password FROM utilisateur WHERE login='".$_GET['f_login']."'" );
  6. $re=mysql_fetch_assoc($requete2);
  7. //requetes: isolement du n-uplet correspondant à un utilisateur particulier.
  8. if (ISSET($_GET['f_login']) && ISSET($_GET['f_mdp']))
  9. //si le password et le login sont définis
  10. {
  11.   $_SESSION = array();
  12.   SESSION_write_close();
  13.   session_start();
  14. }
  15. if($_GET['f_mdp']==$re['password']) //si le mot de passe est juste.
  16. {
  17.   $_SESSION['login']=$_GET['f_login'];
  18. }
  19. else         // si le mot de passe est faux
  20. {
  21.   $_SESSION['login']=NULL;
  22. }
  23. if($_SESSION['login']!=NULL)
  24. { $connect=true;}
  25. else
  26. {$connect=false;}
  27. $login= $_SESSION['login'];
  28. ?>


Message édité par derkomai le 18-05-2008 à 17:43:32
Reply

Marsh Posté le 18-05-2008 à 17:36:56   

Reply

Marsh Posté le 18-05-2008 à 17:54:47    

Verifie la configuration de ton serveur, il faut que la session_id soit transmise, normalement c'est par les cookies mais ca peut aussi se faire par url
Mais je crois qu'il ya une erreur dans ton code, ta session sera toujours NULL sauf si tu envois le mot de passe, essaye un truc du genre :
 

Code :
  1. if (isset($_GET['f_mdp']) && $_GET['f_mdp'] == $re['password']) //si le mot de passe est juste.  
  2. {
  3.   $_SESSION['login']=$_GET['f_login'];
  4.   $login = $_SESSION['login'];
  5. }
  6. else if (isset($_SESSION['login']) && $_SESSION['login'] != "" ) // si une session existe
  7. {
  8.   $login = $_SESSION['login'];
  9. }
  10. else
  11. {
  12.     $_SESSION['login'] = NULL;
  13. }
  14. if ($_SESSION['login'] != NULL) $connect = true;
  15. else $connect = false;


Message édité par masterpsx le 18-05-2008 à 18:09:16
Reply

Marsh Posté le 18-05-2008 à 18:07:57    

Je m'y connais pas trop en serveurs...
le serveur c'est mon propre ordi vu que je travail avec Xamp!
d'ailleurs quand je fait une page toute simple avec des sessions mais sans histoires de connexion, les variables de session passent bien d'une page à l'autre!
 
je pense qu'il y a forcément une erreur quelque part...

Reply

Marsh Posté le 18-05-2008 à 18:10:39    

j'ai édité mon message, je pense avoir trouvé ton erreur

Reply

Marsh Posté le 18-05-2008 à 18:17:25    

Je vois pas où est-ce que tu te sers des infos de session pour aller vérifier la connexion, là. Tu utilises systématiquement GET (de façon dangereuse d'ailleurs point de vue sécurité).
 
Au passage, évite de mettre tes infos (login/mot de passe) en clair sur un forum comme ça, à moins peut-être que tu ne bosses en local sans ouverture sur l'extérieur.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-05-2008 à 18:19:43    

okiii!!!
ébé...
dans $_SESSION['login'] != ""
le "" ca veut dire NULL?

Reply

Marsh Posté le 18-05-2008 à 18:24:18    

Sielfried: je sais qu'il faut pas montrer les mot de passe!
oui je bosse en local, et qui voudrais aller pirater un projet de site marque page uniquement pédagogique?
et comme je t'ai dit on se fiche de la sécurité, mais je tournais tellement en rond que je verifiais chaque possible source d'erreur, ou je cherchais tout ce qui pourrait en déterminer une.
 
sinon:
echo $_SESSION['login']."<BR> b";
echo $connect;
ca c'était invisible lorsque ma connexion foirais.


Message édité par derkomai le 18-05-2008 à 18:25:19
Reply

Marsh Posté le 18-05-2008 à 18:35:45    

derkomai a écrit :

okiii!!!
ébé...
dans $_SESSION['login'] != ""
le "" ca veut dire NULL?


Non pas vraiment, ca veut dire vide, ca n'a rien avoir avec ton problème (c'est ma façon de coder), ton erreur était simple, avec tes conditions ta variable de session était toujours NULL sauf si tu envoyais ton mot de passe par $_GET, hors j'imagine que tu ne l'envois pas a chaque fois que tu changes de page mais uniquement lorsque tu te logs, il faut bien que tu verifies si une variable de session existe déjà a un moment donné :)
 

Reply

Marsh Posté le 18-05-2008 à 19:27:50    

oui, merci! ^^
la question par rapport à "" c'était juste pour savoir, à coté si "" et NULL c'était la même chose ou pas

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed