Variable $_SESSION['id'] non transmise
Résoludelaville81 Messages postés 209 Statut Membre -
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
- Id=108 - Forum MacOS
- Document id lycamobile - Forum LG
- Go trust id ✓ - Forum Logiciels
- Id reseau tv - Forum TNT / Satellite / Réception
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