Authentification et Gestion Utilisateur
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:
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:
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:
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:
$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 !