Salut à tous!
Je suis debutant dans la programmtion avec ZF. j ai donc telechargé la derniere version et maintenant j aimerais creer un formulaire login avec authentification LDAP.
Auriez une example complet pour dummies? :-)
Merci d avance
Salut à tous!
Je suis debutant dans la programmtion avec ZF. j ai donc telechargé la derniere version et maintenant j aimerais creer un formulaire login avec authentification LDAP.
Auriez une example complet pour dummies? :-)
Merci d avance
Bonjour,
Je suis également débutant avec le framework Zend,
J'ai également commencé avec cette version 1.9,
J'ai voulu faire un exemple d'identification mais le tutorial que j'ai trouvé ne me permet pas de faire fonctionner l'ensemble,
j'ai utilisé : ftp://ftp-developpez.com/r-benyacoub.../Zend_Auth.pdf
Cependant quand je teste ça me met qu'il ne trouve pas l'adaptateur DB table
Est ce que je peux vous donner des informations supplémentaires pour que vous m'indiquiez des pistes pour que ça marche ou bien y'a t'il un tutorial plus récent qui aborde zend auth et qui sera sur de fonctionner,
Cordialement,
Bonjour,
Tu dois utiliser un moyen à Zend de s'authentifier, si tu veux utiliser une base de donnée, tu dois passer comme ceci:
Sachant que $pseudonym et $password sont les deux variables récupérée par un formulaire de connexion. $auth est une instance de Zend_Auth_Result, qui permet de tester avec isValid() si la personne existe bel et bien. setCredentialTreatment() n'est pas obligatoire c'est si tu veux rajouter des clauses mysql.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter()); $authAdapter->setTableName('users') ->setIdentityColumn('pseudonym') ->setCredentialColumn('password') ->setCredentialTreatment('MD5(?) AND isvalid = 1') ->setIdentity($pseudonym) ->setCredential($password); $auth = $authAdapter->authenticate(); ?>
Gripsou
Merci beaucoup pour ce petit coup de pouce qui m'a permis d'avancer,
Cependant après quelques ajustements pour que ça fonctionne, j'ai encore un souci avec le stockage d'infos et le getStorage,
Voici l'erreur que cela m'affiche et dont je n'arrive pas à me dépêtrer après avoir parcouru différents forums et la doc officielle zend,
"Notice: Undefined property: IndexController::$_auth in C:\ ... \application\controllers\IndexController.php on line 58
Fatal error: Call to a member function getStorage() on a non-object in C:\ ... \application\controllers\IndexController.php on line 58
Et voici le code de la fonction qui pose problème :
Je suppose que c'est une erreur de débutant mais si vous pouviez me donner une piste ça m'aiderait bien...
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 public function loginAction() { $this->view->message = ''; if ($this->_request->isPost()) { // collect the data from the user Zend_Loader::loadClass('Zend_Filter_StripTags'); $f = new Zend_Filter_StripTags(); $username = $f->filter($this->_request->getPost('username')); $password = $f->filter($this->_request->getPost('password')); if (empty($username)) { $this->view->message = 'Please provide a username.'; } else { // setup Zend_Auth adapter for a database table Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable'); //$dbAdapter = Zend_Registry::get('dbAdapter'); $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter()); $authAdapter->setTableName('player') ->setIdentityColumn('emailPlayer') ->setCredentialColumn('passwordPlayer') ->setCredentialTreatment('statePlayer = \'activated\'') ->setIdentity($username) ->setCredential($password); $result = $authAdapter->authenticate(); $auth = Zend_Auth::getInstance(); if ($result->isValid()) { // success: store database row to auth's storage // system. (Not the password though!) $storage = $this->_auth->getStorage(); $storage->write($adapter->getResultRowObject(array('emailPlayer'))); // stocke l'identité comme objet dans lequel la colonne password // a été omis $storage->write($adapter->getResultRowObject(null, 'passwordPlayer')); $this->_redirect('/'); } else { // failure: clear database row from session $this->view->message = 'Login failed.'; } } } $this->view->title = "Identification"; $this->render(); }
Bonne journée à tous,
bonjour,
ce message d'erreur t'indique que la classe IndexController n'a pas de propriété _auth. Tu ne peux donc pas faire "$storage = $this->_auth->getStorage();" puisque $this->_auth ne correspond à rien...
Remplaces-le par "$storage = $auth->getStorage();" et ça ira déjà mieux($auth est une variable locale à ta méthode loginAction définie deux lignes plus haut)
Partager