Bonjour à tous,
Actuellement sur un projet PHP pour création d'un blog modèle mvc ( Mon premier projet mvc ) pour cela j'ai suivi un tutoriel que je voudrais à présent améliorer.

Je fais face à un problème pour mon Module de Connexion.

Pour commencer le blog j'ai crée un système d’authentification
à l'aide d'un fichier xml qui sauvegarde mes identifiants.

App.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<?xml version="1.0" encoding="utf-8" ?>
<definitions>
    <define var="login" value="admin" ></define>
    <define var="pass" value="admin" ></define>
</definitions>
Je voudrais remplacer celui_ci par ma base de données où j'ai crée une table "Users".

Cependant je ne sais pas comment Modifier mon Controlleur pour que cela fonctionne !

Voici le Code de mon ConnexionController.php

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
16
17
18
19
20
class ConnexionController extends BackController
{
    public function executeIndex(HTTPRequest $request)
    {
        $this->page->addVar('title', 'Connexion');
 
        if ($request->postExists('login')) {
            $login = $request->postData('login');
            $password = $request->postData('password');
 
            if ($login == $this->app->config()->get('login') && $password == $this->app->config()->get('pass')) {
                $this->app->user()->setAuthenticated(true);
                $this->app->httpResponse()->redirect('.');
            } else {
                $this->app->user()->setFlash('Le pseudo ou le mot de passe est incorrect.');
            }
        }
    }
 
}
Ainsi que sa Classe Mère le BackController.php

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
abstract class BackController extends ApplicationComponent
{
    protected $action = '';
    protected $module = '';
    protected $page = null;
    protected $view = '';
    protected $managers = null;
 
    public function __construct(Application $app, $module, $action)
    {
        parent::__construct($app);
 
        $this->managers = new Managers('PDO', PDOFactory::getMysqlConnexion());
        $this->page = new Page($app);
 
        $this->setModule($module);
        $this->setAction($action);
        $this->setView($action);
    }
 
    public function execute()
    {
        $method = 'execute'.ucfirst($this->action);
 
        if (!is_callable([$this, $method]))
        {
            throw new \RuntimeException('L\'action "'.$this->action.'" n\'est pas définie sur ce module');
        }
 
        $this->$method($this->app->httpRequest());
    }
 
    public function page()
    {
        return $this->page;
    }
 
    public function setModule($module)
    {
        if (!is_string($module) || empty($module))
        {
            throw new \InvalidArgumentException('Le module doit être une chaine de caractères valide');
        }
 
        $this->module = $module;
    }
 
    public function setAction($action)
    {
        if (!is_string($action) || empty($action))
        {
            throw new \InvalidArgumentException('L\'action doit être une chaine de caractères valide');
        }
 
        $this->action = $action;
    }
 
    public function setView($view)
    {
        if (!is_string($view) || empty($view))
        {
            throw new \InvalidArgumentException('La vue doit être une chaine de caractères valide');
        }
 
        $this->view = $view;
 
        $this->page->setContentFile(__DIR__.'/../../App/'.$this->app->name().'/Modules/'.$this->module.'/Views/'.$this->view.'.php');
    }
}
J'ai réfléchi à la requête SQL que je devrais utiliser mais comme je le disais je ne sais pas comment l'intégrer dans mon code.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 $sql = 'SELECT pseudo,password FROM users WHERE pseudo = :pseudo AND password = :password';

Merci d'avance pour votre réponse et pour aide !
N'hésitez pas à me demander si vous avez besoin de plus de renseignements sur les classes adjacentes !