Variable $_SESSION['id'] non transmise

Résolu
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024 - 4 déc. 2023 à 19:23
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024 - 16 janv. 2024 à 15:46

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


3 réponses

jordane45 Messages postés 38148 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 651
22 déc. 2023 à 22:37

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


0
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024
23 déc. 2023 à 15:51

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


0
jordane45 Messages postés 38148 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 651
23 déc. 2023 à 17:14

Tu as fait les var_dump que je t'ai demandé en désactivant les redirections ??

Si oui, ça t'affiche quoi ?

0
jordane45 Messages postés 38148 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 651 > jordane45 Messages postés 38148 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024
23 déc. 2023 à 17:15

Et ta variable $pdo elle est initialisée où ? dans quel fichier ?

0
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024
16 janv. 2024 à 14:41

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();
	}

0
jordane45 Messages postés 38148 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 4 651
16 janv. 2024 à 15:00

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

0
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024
16 janv. 2024 à 15:46

Merci.

Comment je mets le sujet résolu ?

0