Je tente de me mettre à la POO et j'ai un problème avec un portée de variable.
Tout fonctionne sauf un tableau de session et tout est bien posté.
Mon tableau de session et ses éléments sont bien déclarés mais ses variables restent vides.Je reçois le message suivant:
Or $row est bien défini et quand le fait un print_r d'un champ, il me le sort bien. (voir ligne 22)Notice: Undefined variable: row
Notice: Trying to get property of non-object
Voici mon code:
1/ Ma classe + fonctions
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 $db = db::connect(); class auth{ protected $login; protected $password; protected $email; public function setLogin($login){ $this->login = $login; } public function setPassword($password){ $this->password = $password; } public function login($fields, $table, $col_login, $col_password){ $query = Db::getInstance()->prepare('SELECT '.$fields.' FROM '.$table.' WHERE '.$col_login.' = :login AND '.$col_password.' = :password'); $query->bindValue(':login', $this->login,PDO::PARAM_STR); $query->bindValue(':password', $this->password,PDO::PARAM_STR); $query->execute(); if($query->rowCount() > 0){ $row = $query->fetch(PDO::FETCH_OBJ); echo '<pre>'; print_r($row->u_login); echo '</pre>'; return true; }else{ return false; } $query->closeCursor(); } }
2/Le formulaire
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <?php session_start(); if(isset($_POST['login_submit'])){ if(!empty($_POST['login']) && !empty($_POST['password'])){ $auth = new auth(); $auth->setLogin($_POST['login']); $auth->setPassword(sha1($_POST['password'])); if($auth->login('u_login,u_password,u_email,u_id_level', 'users', 'u_login', 'u_password')){ $_SESSION['back_office'] = array( 'login' => $row->u_login ); }else{ message::showError('Compte non reconnu'); } }else{ message::showError('Veuillez remplir tous les champs'); } } ?> <form action="test.php" name="loginform" method="post"> <input type="text" name="login"> <input type="password" name="password"> <input type="submit" name="login_submit" value="Se connecter"> </form>
Il ne prend pas la valeur de mes champs que je fais comme ceci:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $_SESSION['back_office'] = array( 'login' => $row->u_login );
Et voici un print_r de POST ET SESSION
Merci d'avance de vos conseils.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Array ( [login] => admin [password] => lemotdepasse [login_submit] => Se connecter ) Array ( [back_office] => Array ( [login] => ) )
David
Partager