IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Acl & Zend_Auth PHP Discussion :

Exception Zend_Auth_Adapter_DbTable [ZF 1.7]


Sujet :

Zend_Acl & Zend_Auth PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 57
    Par défaut Exception Zend_Auth_Adapter_DbTable
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Uncaught exception 'Zend_Auth_Adapter_Exception' with message 'The supplied parameters to Zend_Auth_Adapter_DbTable failed to produce a valid sql statement, please check table and column names for validity.' in /var/www/Monsite/application/lib/Zend/Auth/Adapter/DbTable.php:392
    voici le code de l'action Login :
    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
     
    	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 :!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //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);
    si qlq à une solution ou des remarques

    et Merci pour votre aide

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 57
    Par défaut Utilisation de Zend_Auth_Adapter_Dbtable
    Salut,
    SVP j'ai met dans mon code de l'action login le code suivant(1ere code):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $authAdapter = new Zend_Auth_Adapter_DbTable ( $dbAdapter );
    			$authAdapter->setTableName ( 'users' );
    			$authAdapter->setIdentityColumn ( 'username' );
    			$authAdapter->setCredentialColumn ( 'password' );
    			$authAdapter->setCredentialTreatment ( 'MD5(?) AND actif = "1"' );
    mais il me donne l'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    The supplied parameters to Zend_Auth_Adapter_DbTable failed to produce a valid sql statement, please check table and column names for validity.
    mais lorsque je met au lieu du code précedent la ligne suivante(2éme code) zend_auth marche bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dbAdapter = Zend_Registry::get ( 'dbAdapter' ,'USERS','USERNAME','PASSWORD');
    alors SVP si qlq peut m'éclaire sur les points suivants :
    *qu'il est la différence entre les deux codes
    *et prq dans le premier code il me donne ce problème mais par contre je le trouve dans la plupart des tuto.
    *mais si je veut que mon mot de passe soit analyse avec MD5 commet je vais faire dans le 2éme code

    Et merci par avance pour vous commentaire
    cordialement

  3. #3
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Si tu n'as pas de colonne "actif", alors c'est cette ligne qui pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $authAdapter->setCredentialTreatment ( 'MD5(?) AND actif = "1"' );
    Tes mots de passe sont bien stockés avec un hach md5 ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  2. Exception & Try..catch
    Par PurL dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/12/2002, 15h35
  3. Réponses: 3
    Dernier message: 01/11/2002, 14h30
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo