Votre question

probleme variables de sessions avec PHP

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
26 Juillet 2008 17:27:00

Bonjour,
J'ai un site avec un espace membre dont l'accès peut se faire depuis n'importe quelle page du site via un bloc en haut de page. Ce bloc comprend donc des champ login et password.
J'arrive à me connecter avec mes identifiants, la vérification se passe nickel et j'arrive même à me déconnecter ou à afficher les variables de session sur la page index.php.
Mais voilà le problème : sur l'include "login.php" (bloc qui sert à se connecter donc) j'ai l'impression que ma variable de session "SESSION['logged']" se met en "false" et du coup je n'arrive à afficher aucune variable de session... J'ai bien mis des session start, bien fais attention à cette variable de session mais rien n'y fait je bloque !

Concrètement, mes variables s'affichent dans le bloc de contenu de la page mais pas en haut (où je voudrais qu'elles s'affichent), c'est assez gênant.

Voici le code qui (devrait) contenir la fameuse erreur qui est en train de me tuer :) 

index.php
  1. <?php
  2. session_start();
  3.  
  4.  
  5. if (!isset($_SESSION['logged'])) $_SESSION['logged'] = false;
  6.  
  7. include("inc/fonctions.php");
  8. require("inc/connexion.php");
  9.  
  10.  
  11. ?>
  12.  
  13. <html>
  14. <head>
  15. <title>Accueil</title>
  16. <link href="<?php echo RACINE; ?>img/iconeBarre.png" rel="icon" type="image/png" />
  17. <link href="<?php echo RACINE; ?>css/index.css" rel="stylesheet" media="screen" type="text/css" title="style"/>
  18. </head>
  19. <body>
  20. <div id="content">
  21. <?php
  22. include(RACINE."inc/login.php");
  23. include(RACINE."inc/menu.php");
  24. include(RACINE."inc/banniere.php");
  25. include(RACINE."inc/menuTop.php");
  26. ?>
  27.  
  28. <div id="corps">
  29.  
  30.  
  31.  
  32. </table>
  33. <?php include(RACINE."inc/copy.php");?>
  34. </div>
  35.  
  36. <?php
  37. //Déconnection de la base de données.
  38. mysql_close();
  39. ?>
  40.  
  41. </div>
  42. </body>
  43. </html>


  1. login.php
  2. <?php
  3. if (!isset($_SESSION['logged'])) $_SESSION['logged'] = false;
  4. include("../inc/fonctions.php");
  5. ?>
  6. <link href="<?php echo RACINE ;?>css/login.css" rel="stylesheet" media="screen" type="text/css" title="style"/>
  7. <div id="login">
  8. <form method="post" action="<?php echo RACINE ;?>content/connexion.php">
  9. <label for="pseudo">Pseudo : <input type="text" name="pseudo" id="pseudo" /></label>
  10. <label for="mot_passe">Mot de passe : <input type="password" name="mot_passe" id="mot_passe" /></label>
  11. <label for="souvenir">Se souvenir de moi ? <input type="checkbox" name="souvenir" id="souvenir" /></label>
  12. <input type="submit" name="connexion" value="Se connecter" />
  13. </form>
  14. <?php
  15. print_r($_SESSION);
  16. if (isset($_SESSION['logged']) && $_SESSION['logged'] === true)
  17. {
  18. echo '<a href="deconnexion.php"><img src="images/close-session.gif" height="20" border="0" style="vertical-align : middle"></a>';
  19. }
  20. else
  21. {
  22.  
  23.  
  24.  
  25. };
  26. ?>
  27. <a href="<?php echo RACINE ;?>index.php"><img src="<?php echo RACINE ;?>img/logoAccueil.jpg"></a>
  28.  
  29. </div>


Les autres includes "menuTop", "fonctions... ne contiennent rien qui ait un rapport avec ces sessions.
Merci beaucoup de votre aide !

Autres pages sur : probleme variables sessions php

a c 232 L Programmation
26 Juillet 2008 19:29:55

salut,

t'as pas de session_start() dans ton fichier login.php
27 Juillet 2008 12:37:34

Salut Omar,

J'ai mis un session_start() dans login.php mais rien n'y fait.
Contenus similaires
a c 232 L Programmation
27 Juillet 2008 13:11:21

tout dépend ce que tu fais dans connection.php :p 
27 Juillet 2008 14:48:12

connexion.php
  1. <?php
  2. require("../inc/connexion.php");
  3. //Si la variable $_SESSION['logged'] n'existe pas on la créée.
  4. if (!isset($_SESSION['logged'])) $_SESSION['logged'] = false;
  5.  
  6. //&& $_SESSION['logged'] === false
  7. if (isset($_POST['connexion'])&& $_SESSION['logged']===false)
  8. {
  9. //Vérification des autres variables.
  10. if (isset($_POST['pseudo'],$_POST['mot_passe']) && !empty($_POST['pseudo']) && !empty($_POST['mot_passe']))
  11. {
  12. //Vérification du pseudo.
  13. $pseudo = htmlspecialchars($_POST['pseudo']);
  14. $mot_passe = htmlspecialchars($_POST['mot_passe']);
  15.  
  16. //Requête comptant le nombre de pseudos $_POST['pseudo']
  17. $sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membre WHERE MEMpseudo='".$pseudo."'");
  18.  
  19. //Si le pseudo existe.
  20. if (mysql_result($sql,0,'nb_pseudo') == 1)
  21. {
  22. //Vérification du mot de passe
  23. //Information sur le compte du membre.
  24. $sql_infos = mysql_query("SELECT * FROM membre WHERE MEMpseudo='".$pseudo."'");
  25.  
  26. $donnees = mysql_fetch_array($sql_infos);
  27.  
  28. //Hashage du mot de passe.
  29. $mot_passe_hash = md5($mot_passe);
  30.  
  31. //Comparaison du mot de passe.
  32. if ($mot_passe_hash == $donnees['MEMmdp'])
  33. {
  34. //On vérifie que le compte est confirmé.
  35. //Si $donnees['confirmation'] vaut 1.
  36. if ($donnees['confirmation'] == 1)
  37. {
  38. //Tout est bon, on connecte le membre.
  39. $_SESSION['logged'] = true;
  40.  
  41. //Création de variables de session, contenant des informations sur le membre.
  42. $_SESSION['id'] = $donnees['MEMid'];
  43. $_SESSION['pseudo'] = $pseudo;
  44. $_SESSION['nom'] = $donnees['MEMnom'];
  45. $_SESSION['prenom'] = $donnees['MEMprenom'];
  46.  
  47.  
  48. //Redirection vers la page d'accueil
  49. header("location: <a href="http://www.astronova.fr/index.php" rel="nofollow" target="_blank">http://www.astronova.fr/index.php</a>");
  50. }
  51. else
  52. echo 'Erreur : le compte n\'est pas confirmé !<br />
  53. Pour activer votre compte, veuillez vous référer au mail qui vous a été envoyé.
  54.  
  55. ';
  56. }
  57. else
  58. echo 'Erreur : le mot de passe est incorrect !';
  59. }
  60. else
  61. echo 'Erreur : le pseudo n\'existe pas !';
  62. }
  63. else
  64. echo 'Erreur : veuillez remplir tous les champs !';
  65. }
  66. //Si l'utilisateur essaie de se connecter alors que les identifiants de connexion ne sont pas passés ou qu'il est déjà logué
  67. else
  68. {
  69. echo 'Vous êtes déjà connecté ! Cliquez <a href="deconnexion.php">ici</a> pour vous déconnecter.';
  70. }
  71. ?>


L'autre fichier qui s'appelle aussi "connexion.php" (je sais pas très malin lol) ne contient que la procédure pour se connecter à la base.

a c 232 L Programmation
27 Juillet 2008 15:35:59

si tu veux pouvoir utiliser $_SESSION, il te faut un session_start()
27 Juillet 2008 15:50:23

Oui je les avais enlever pour voir si ça venait pas de là. Je l'ai remis et toujours rien.. Je comprends pas d'où ça peut venir.
27 Juillet 2008 16:03:30

Quand j'affiche le contenu du array SESSION. J'ai ça sur la page principale :
Array ( [logged] => 1 [id] => 5 [pseudo] => test1 => Test [prenom] => Test )
Donc ça veut dire que tout le système de session fonctionne sinon il pourrait pas passer la variable. Et en haut (login.php) j'ai ça :
Array ( [logged] => )
C'est tout vide. Pourtant au final c'est dans la même page puisque je l'inclue...
29 Juillet 2008 12:03:44

désolé mais... uuuuup !
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS