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:

Notice: Undefined variable: row
Notice: Trying to get property of non-object
Or $row est bien défini et quand le fait un print_r d'un champ, il me le sort bien. (voir ligne 22)

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

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] => 
        )
 
)
Merci d'avance de vos conseils.

David