probleme variables de sessions avec PHP
Dernière réponse : dans Programmation
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
Les autres includes "menuTop", "fonctions... ne contiennent rien qui ait un rapport avec ces sessions.
Merci beaucoup de votre aide !
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
<?php session_start(); if (!isset($_SESSION['logged'])) $_SESSION['logged'] = false; include("inc/fonctions.php"); require("inc/connexion.php"); ?> <html> <head> <title>Accueil</title> <link href="<?php echo RACINE; ?>img/iconeBarre.png" rel="icon" type="image/png" /> <link href="<?php echo RACINE; ?>css/index.css" rel="stylesheet" media="screen" type="text/css" title="style"/> </head> <body> <div id="content"> <?php include(RACINE."inc/login.php"); include(RACINE."inc/menu.php"); include(RACINE."inc/banniere.php"); include(RACINE."inc/menuTop.php"); ?> <div id="corps"> </table> <?php include(RACINE."inc/copy.php");?> </div> <?php //Déconnection de la base de données. mysql_close(); ?> </div> </body> </html>
login.php <?php if (!isset($_SESSION['logged'])) $_SESSION['logged'] = false; include("../inc/fonctions.php"); ?> <link href="<?php echo RACINE ;?>css/login.css" rel="stylesheet" media="screen" type="text/css" title="style"/> <div id="login"> <form method="post" action="<?php echo RACINE ;?>content/connexion.php"> <label for="pseudo">Pseudo : <input type="text" name="pseudo" id="pseudo" /></label> <label for="mot_passe">Mot de passe : <input type="password" name="mot_passe" id="mot_passe" /></label> <label for="souvenir">Se souvenir de moi ? <input type="checkbox" name="souvenir" id="souvenir" /></label> <input type="submit" name="connexion" value="Se connecter" /> </form> <?php print_r($_SESSION); if (isset($_SESSION['logged']) && $_SESSION['logged'] === true) { echo '<a href="deconnexion.php"><img src="images/close-session.gif" height="20" border="0" style="vertical-align : middle"></a>'; } else { }; ?> <a href="<?php echo RACINE ;?>index.php"><img src="<?php echo RACINE ;?>img/logoAccueil.jpg"></a> </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
Lassé par la pub ? Créez un compte
connexion.php
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.
<?php require("../inc/connexion.php"); //Si la variable $_SESSION['logged'] n'existe pas on la créée. if (!isset($_SESSION['logged'])) $_SESSION['logged'] = false; //&& $_SESSION['logged'] === false if (isset($_POST['connexion'])&& $_SESSION['logged']===false) { //Vérification des autres variables. if (isset($_POST['pseudo'],$_POST['mot_passe']) && !empty($_POST['pseudo']) && !empty($_POST['mot_passe'])) { //Vérification du pseudo. $pseudo = htmlspecialchars($_POST['pseudo']); $mot_passe = htmlspecialchars($_POST['mot_passe']); //Requête comptant le nombre de pseudos $_POST['pseudo'] $sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membre WHERE MEMpseudo='".$pseudo."'"); //Si le pseudo existe. if (mysql_result($sql,0,'nb_pseudo') == 1) { //Vérification du mot de passe //Information sur le compte du membre. $sql_infos = mysql_query("SELECT * FROM membre WHERE MEMpseudo='".$pseudo."'"); $donnees = mysql_fetch_array($sql_infos); //Hashage du mot de passe. $mot_passe_hash = md5($mot_passe); //Comparaison du mot de passe. if ($mot_passe_hash == $donnees['MEMmdp']) { //On vérifie que le compte est confirmé. //Si $donnees['confirmation'] vaut 1. if ($donnees['confirmation'] == 1) { //Tout est bon, on connecte le membre. $_SESSION['logged'] = true; //Création de variables de session, contenant des informations sur le membre. $_SESSION['id'] = $donnees['MEMid']; $_SESSION['pseudo'] = $pseudo; $_SESSION['nom'] = $donnees['MEMnom']; $_SESSION['prenom'] = $donnees['MEMprenom']; //Redirection vers la page d'accueil header("location: <a href="http://www.astronova.fr/index.php" target="_blank">http://www.astronova.fr/index.php</a>"); } else echo 'Erreur : le compte n\'est pas confirmé !<br /> Pour activer votre compte, veuillez vous référer au mail qui vous a été envoyé. '; } else echo 'Erreur : le mot de passe est incorrect !'; } else echo 'Erreur : le pseudo n\'existe pas !'; } else echo 'Erreur : veuillez remplir tous les champs !'; } //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é else { echo 'Vous êtes déjà connecté ! Cliquez <a href="deconnexion.php">ici</a> pour vous déconnecter.'; } ?>
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.
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...
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...
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumComment récupérer les variables d'un formulaire en PHP ? Problème !
- Forum[Réglé] Probleme Sessions PHP
- ForumProblèmes avec sessions php
- SolutionsProblème variable PHP
- Forum[php] Problèmes avec les sessions
- Forum[php][résolu] Problème variable de sessions
- ForumAide PHP - Passage de variable en $_SESSION entre plusieurs pages
- ForumProbleme PHP:Notice undefined variable
- ForumProblème php session_start
- Voir plus