Page 1 sur 1

Récupérer les variables de session

Posté : 12 nov. 2014, 22:00
par cris84
Bonjour,
je voudrais récupérer les variables de session quand l'utilisateur se connecte via un formulaire basique.
Voici mon code php
J'affiche les varaibles avec print_r($_SESSION);

Merci de votre aide... :wink:
<?php
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
	if ((isset($_POST['pseudo']) && !empty($_POST['pseudo'])) && (isset($_POST['mot_passe']) && !empty($_POST['mot_passe']))) {

	$base = mysql_connect ('', '', '');
	mysql_select_db ('', $base);

	
	$sql = 'SELECT count(*) FROM membres WHERE pseudo="'.mysql_escape_string($_POST['pseudo']).'" AND mot_passe="'.mysql_escape_string(md5($_POST['mot_passe'])).'"';
	$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
	$data = mysql_fetch_array($req);


	mysql_free_result($req);
	mysql_close();
	

	 
	if ($data[0] == 1) {
	 $sql_infos = ('SELECT id, mot_passe, acces, admin, design, langue FROM membres WHERE  pseudo="'.mysql_escape_string($_POST['pseudo']).'"');
                        $donnees = mysql_fetch_array($sql_infos);
	
		session_start();
		
		$_SESSION['admin'] = $donnees['admin'];
		$_SESSION['design'] = $donnees['design'];
		$_SESSION['langue'] = $donnees['langue'];
		$_SESSION['pseudo'] = $_POST['pseudo'];
		header('Location: admin.php');
		exit();
	?>
Voilà l'affichage dans admin.php
<?php Array ( [pseudo] => admin [admin] => [id] => [design] => [langue] => ) ?>
Comme vous le constatez l'ID, le design et la langue sont vident et admin ne figure pas :?:

Re: Récupérer les variables de session

Posté : 12 nov. 2014, 23:17
par yann18
bonjour,

Le problème vient de la 2ème requête car à aucun moment tu l'exécute, avec mysql_query().Pour mysql_close(), tu peux la placer à la fin de tes requêtes ou tout simplement ne pas l'utiliser auquel cas la connexion à mysql se ferme automatiquement à la fin du script.
A vrai dire tu n'as pas besoin de 2 requêtes pour faire une authentification.Tu peux te contenter de ceci:

<?php
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
        if ( !empty($_POST['pseudo'] ) &&  !empty($_POST['mot_passe']) ) {

        $base = mysql_connect ('', '', '');
        mysql_select_db ('', $base);    
        $sql = 'SELECT  id, acces, admin, design, langue FROM membres WHERE pseudo="'.mysql_escape_string($_POST['pseudo']).'" AND mot_passe="'.mysql_escape_string(md5($_POST['mot_passe'])).'"';
        $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
       $data = mysql_fetch_array($req);
        mysql_free_result($req);
       if(!empty( $data) ){ //le resultat est un tableau non vide alors le user existe
           
                session_start();
               
                $_SESSION['admin'] = $data['admin'];
                $_SESSION['design'] = $data['design'];
                $_SESSION['langue'] = $data['langue'];
                $_SESSION['pseudo'] = $_POST['pseudo'];
                header('Location: admin.php');
                exit();
     }else{
         echo "Pseudo ou mot de passe incorrect";
    }
       
 }
}
       
        ?>
tu ne peux pas utiliser à la fois isset() et empty() car empty() inclut isset() c-a-d empty() vérifie que la variable existe et qu'elle est non nulle(null, false, vide,0)