Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je débute en Zend Framework.
Je cherche à modifier mon application actuelle pour la refaire avec Zend.
J'ai une page d'authentification et je veux la transformer suivant le Zend_auth et voir couplée par la suite à Zend_acl.
J'ai suivi ce tuto : ftp://ftp-developpez.com/r-benyacoub/tu … d_Auth.pdf Mais ce n'est pas concluant du tout. Ca ne marche pas et je trouve cela bien compliqué pour une authentification.
N'y a t'il rien de plus simple ?
J'ai aussi essayer avec la doc officielle http://framework.zend.com/manual/en/zen … table.html mais je n'arrive pas à coupler cela avec un formulaire.
Argh la souffrance est dur en ce moment. Mais je pense qu'avec un peu d'aide je devrais arriveer à modifier mon projet.
Merci à tous.
Hors ligne
C'est encore moi.
Alors je viens de réaliser quelque chose qui "fonctionne". Mais je ne sais pas ce que ca vaut niveau architecture et si c'est vraiment orthodoxe vis à vis du développement. C'est le script de kitpages adapté.
<?php // INITIALISATION DU Zend Framework set_include_path( ".;". "C:/Program Files/xampp/htdocs/prog_perso/gestcollector/commun/library;". get_include_path() ); require_once 'Zend/Loader.php'; Zend_Loader::loadClass("Zend_Auth"); Zend_Loader::loadClass("Zend_Auth_Result"); Zend_Loader::loadClass("Zend_Auth_Adapter_Interface"); // définition de mon adapteur class Kitpages_Auth_SimpleAdapter implements Zend_Auth_Adapter_Interface { const LOGIN="admin"; const PASSWORD="admin"; private $login=null; private $pass=null; public function __construct($login, $pass) { $this->login = $login; $this->pass = md5($pass); } public function authenticate() { // Zend paramètres de la connexion mysql require_once 'Zend/Config/Ini.php'; $config = new Zend_Config_Ini('commun/config.ini', 'staging'); require_once 'Zend/Db/Adapter/Pdo/Mysql.php'; // Zend Objet Base de données $db = new Zend_Db_Adapter_Pdo_Mysql(array( 'host' => $config->database->host, 'username' => $config->database->username, 'password' => $config->database->password, 'dbname' => $config->database->name )); // Zend objet Select $select = $db->select() ->from('gc_utilisateurs', array('login', 'pass')) ->where('login = ?', $this->login) ->where('pass = ?', $this->pass); $db->setFetchMode(Zend_Db::FETCH_OBJ); $result = $db->fetchAll($select, 7); $nb = count($result); if ($nb == '1') { $res = new Zend_Auth_Result( Zend_Auth_Result::SUCCESS, $this->login, array() ); return $res; } else { $res = new Zend_Auth_Result( Zend_Auth_Result::FAILURE, null, array("mauvais login ou password") ); return $res; } } } $auth = Zend_Auth::getInstance(); //// // CONTROLLER //// // si un login pass a été posté if (isset($_POST["login"])) { // récupérons les données de l'internaute // pour le bien il faudrait utiliser Zend_Validate ici... $login = $_POST["login"]; $pass = $_POST["pass"]; $kitAdapter = new Kitpages_Auth_SimpleAdapter($login,$pass); $result = $auth->authenticate($kitAdapter); if (!$result->isValid()) { header("Location: ". $_SERVER["SCRIPT_NAME"]. "?message=wrong_login_or_pass"); exit(); } header("Location: ".$_SERVER["SCRIPT_NAME"]); exit(); } // si une action if ( isset($_GET["action"]) && ($_GET["action"]=="logoff") ) { $auth->clearIdentity(); } // VUE if ($auth->hasIdentity()) { $member = $auth->getIdentity(); echo "Bonjour ".$member."<br/>"; } else { $member = null; echo "Vous n'êtes pas identifié<br/>"; } // afficher les messages d'erreur if (isset($_GET["message"])) { // hum... là aussi il faudrait valider ce $_GET... echo "<b>".$_GET["message"]."</b><br/>"; } ?> <form action="<?php echo $_SERVER["SCRIPT_NAME"];?>" method="post"> login:<input name="login" type="text" value=""><br/> password:<input name="pass" type="password" value=""><br/> <input type="submit" value="s'identifier"> </form> <a href="?action=logoff">se déconnecter</a>
Voilà, je vous ai mis le code complet. Dites moi ce que vous en pensez, de manière constructive bien entendu.
Merci.
Hors ligne