Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
c'est la première fois que je travail avec Zend_ Auth et j'ai rencontrerai un problème lors de la vérification du login et mot de passe avec la BD (table USERS (USERNAME, PASSWORD)),
Voici l'erreur que je trouve :
The supplied parameters to Zend_Auth_Adapter_DbTable failed to produce a valid sql statement, please check table and column names for validity.
voici le code de l'action Login :
function loginAction() {
$form =new Auth_FormulaireAuth();
if ($this->_request->isPost () && $form->isValid($this->_request->getPost())) {
$username = $form->getValue( 'username' );
$password = $form->getValue( 'password' ) ;
// 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 ( $dbAdapter );
$authAdapter->setTableName ( 'USERS' );
$authAdapter->setIdentityColumn ( 'USERNAME' );
$authAdapter->setCredentialColumn ( 'PASSWORD' );
$authAdapter->setCredentialTreatment ( 'MD5(?) AND actif = "1"' );
// Set the input credential values to authenticate against
$authAdapter->setIdentity ( $username );
$authAdapter->setCredential ( $password );
// do the authentication
$auth = Zend_Auth::getInstance ();
$result = $auth->authenticate ( $authAdapter );
if ($result->isValid ()) {
$data = $authAdapter->getResultRowObject ( null, 'PASSWORD' );
$auth->getStorage ()->write ( $data );
$this->_redirect ( '/' );
} else {
// failure: clear database row from session
echo "l'identifiant n'existe pas.";
$this->_redirect ( '/fr/auth/erreur' );
}
}
$this->view->form = $form;
$this->view->title = "Log in";
$this->render ();
et voici mon code de connexion avec la bd dans boostratp :!
//chargement des classes nécessaires
Zend_Loader::registerAutoload();
Zend_Loader::loadClass('Zend_Db_Table');
Zend_Loader::loadClass('Zend_Debug');
Zend_Loader::loadClass('Zend_Auth');
Zend_Loader::loadClass('My_Acl');
//lecture config
$config = new Zend_Config_Ini('./application/config.ini', 'general');
Zend_Registry::set('config', $config);
$db = Zend_Db::factory($config->db->adapter,
$config->db->params->toArray());
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('dbAdapter', $db);
Je pense que le probléme vien du Zend_Auth_Adapter_DbTable qui ne connait pas $dbAdapter
si qlq à une solution ou des remarques
et Merci pour votre aide
Dernière modification par ghamrired (06-03-2009 11:58:16)
Hors ligne
Si vous utilisez MySql v. > 5.5.3, les champs 'password' et 'salt' de votre table 'user' doivent être en varbinary(50).
Hors ligne
Je ne suis pas sûr que tu ai le droit d'ajouter "AND actif = "1"" dans ton appel à setCredentialTreatment.
Tu devrais essayer avec juste
[lang=php]$authAdapter->setCredentialTreatment ( 'MD5(?)' );
Dernière modification par Ithier (30-08-2011 14:24:06)
Hors ligne
Pages: 1