Variable $_SESSION['id'] non transmise
Résoludelaville81 Messages postés 195 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
a la création de mon site j'avais oublié de passer $_SESSION['id'] lors de la connexion à l'espace admin.
Maintenant que je souhaite la rajouter, elle n'est pas transmise
$requete = 'SELECT * FROM admin WHERE login = "'.$_POST['login'].'" and mdp="'.$_POST['mdp'].'"'; $result = $pdo->query($requete); if($result->rowCount()==0){ header('location:erreur.php'); }else{ session_start(); $ligne_tab = $result->fetch_assoc(); $_SESSION['log'] = $ligne_tab[0]; $_SESSION['mdp'] = $ligne_tab[1]; $_SESSION['nom_ad'] = $ligne_tab[2]; $_SESSION['prenom_ad'] = $ligne_tab[3]; $_SESSION['sa'] = $ligne_tab[4]; $_SESSION['title'] = $ligne_tab[5]; $_SESSION['id'] = $ligne_tab[6]; header('location:admin/gestion.php'); }
session_start(); <?php echo "<pre>"; print_r($_SESSION); echo "</pre>"; ?>
Array ( [log] => [mdp] => [nom_ad] => [prenom_ad] => [sa] => [site] => )
Il y a les bonnes données mais id n'est pas là.
Merci d'avance pour cotre aide.
Macintosh / Chrome 119.0.0.0
- Variable $_SESSION['id'] non transmise
- Id telephone - Guide
- Gate first id ✓ - Forum Navigateur
- Id reseau tv - Forum TNT / Satellite / Réception
- Id=108 - Forum MacOS
- Go trust id ✓ - Forum Logiciels
3 réponses
Bonjour,
Es tu sûr que ta variable $ligne_tab contient bien les informations désirées ?
Fais en un var_dump ( et pense bien à mettre en commentaire ta redirection pour pouvoir en voir le résultat ).
A noter que tu fais un fetch_assoc ... tu dois donc utiliser le "nom" des champs de ta table et non leur position dans l'array....
https://www.php.net/manual/fr/pdostatement.fetch.php
.
Au passage, évites d'utiliser l'instruction $pdo->query
A la place, utilise les requêtes préparées. ( et pense à activer l'affichage des erreurs PDO )
Voir le contenu de ce lien : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
bonjour
Code modifié mais ne fonctionne toujours pas
<?php session_start(); ini_set('display_errors', 1); error_reporting(E_ALL); include ('entete.php'); if(isset($_POST['valider'])){ $login = $_POST['login']; $mdp = $_POST['mdp']; $query = "SELECT * FROM admin WHERE login = :login AND mdp = :mdp"; $datas = array(':login'=>$login, ':mdp'=>$mdp); try { $result = $pdo->prepare($query); $result->execute($datas); } catch (Exception $e) { echo " Erreur ! " . $e->getMessage(); echo " Les datas : "; print_r($datas); } if($result->rowCount()==0){ header('location:erreur.php'); }else{ $row = $result->fetch(); $_SESSION['id_admin'] = $row['id']; $_SESSION['log'] = $row['login']; $_SESSION['mdp'] = $row['mdp']; $_SESSION['nom_ad'] = $row['nom_ad']; $_SESSION['prenom_ad'] = $row['prenom_ad']; $_SESSION['sa'] = $row['sa']; $_SESSION['title'] = $row['title']; header('location:admin/gestion.php'); } }else{ ?> <div class="ligne_top"></div> <div class="row"> <div class="col-md-4"> <form method="post" action="index.php"> <div class="form-group"> <label for="login">Nom d'utilisateur</label> <input type="text" class="form-control" name="login" id="login" placeholder="Nom d'utilisateur"> </div> <div class="form-group"> <label for="password">Mot de passe</label> <input type="password" class="form-control" name="mdp" id="password" placeholder="Mot de passe "> </div> <button type="submit" class="btn btn-primary" name="valider">Valider</button> </form> </div> </div> <?php } include ('footer.php');
Je te souhaite de bonnes fêtes
Bonjour, le var_dump($_SESSION);
me retourne
array(7) { ["id_admin"]=> string(1) "1" ["log"]=> string(7) "######" ["mdp"]=> string(3) "#######" ["nom_ad"]=> string(7) "######" ["prenom_ad"]=> string(8) "#######" ["sa"]=> string(1) "1" ["title"]=> string(35) "#########" }
Maintenant que j'ai fait ça le print_r($_SESSION) que j'a fait sur la page de redirection affiche bien "id_admin" qui ne passait pas avant.
Bizarre je ne comprends pas.
Concernant la variable $pdo elle est appelé dans le fichier entete.php.
connexion.php
try{ $pdo = new PDO('mysql:host=####.mysql.db;dbname=########', '#######', '#######'); $pdo->exec("SET CHARACTER SET utf8"); } catch(PDOException $e){ echo 'Connexion échouée : '.$e->getMessage(); exit(); }
Donc si ton print_r te retourne les bonnes infos .. tu n'as plus de souci non ?
NB: Pour ta connexion en PDO, merci d'appliquer ce qui est indiqué ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs