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
Je voudrais remplacer celui_ci par ma base de données où j'ai crée une table "Users".
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>
Cependant je ne sais pas comment Modifier mon Controlleur pour que cela fonctionne !
Voici le Code de mon ConnexionController.php
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 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.'); } } } }
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
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'); } }
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 !
Partager