Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-01-2012 10:42:18

bencoandco
Nouveau membre
Date d'inscription: 12-01-2012
Messages: 3

Problème formulaire authentification avec zend

Bonjour !


J'ai un problème avec zend j'essaye de faire un formulaire d'authentification avec le script ci-dessous mais lorsque je le lance en locale avec xampp le serveur apache locale plante et se stoppe voici le script :

Code PHP :

/ ******* script *************************************/
class IndexController extends Zend_Controller_Action
{
  .
  .
  .
 
  .
  .

   public function loginAction()
    {
        require_once 'application\forms\auth\login.php';
       
        $db = $this->_getParam('db');

        $loginForm = new Default_Form_Auth_Login();

        if ($loginForm->isValid($_POST))
        {

           $adapter = new Zend_Auth_Adapter_DbTable(
                $db,
                'users',
                'username',
                'password'
                );
         
            $adapter->setTableName('users');
            $adapter->setIdentity($loginForm->getValue('username'));
            $adapter->setCredential($loginForm->getValue('password'));
           
           
            
                     
                       
            $auth   = Zend_Auth::getInstance();
            $result = $auth->authenticate($adapter);
 
            if ($result->isValid())
            {
                $this->_helper->FlashMessenger('Successful Login');
                $this->_redirect('/');
                return;
            }
            else
            {
              echo $loginForm->render($this->view);
            }
           
   

        }
        else
        {
       
          echo $loginForm->render($this->view);
          
        }

        $this->view->loginForm = $loginForm;

    }


/ ******* fin script *************************************/

après observation il semblerait que ce soit cette ligne qui fasse tout planter :

Code PHP :

$result = $auth->authenticate($adapter);



et plus précisément dans le fichier /zend/auth/adapter/dbtable.php la ligne 483 en gras ci-dessous :

Code PHP :

    protected function _authenticateQuerySelect(Zend_Db_Select $dbSelect)
    {
        try {
            if ($this->_zendDb->getFetchMode() != Zend_DB::FETCH_ASSOC) {
                $origDbFetchMode = $this->_zendDb->getFetchMode();
                $this->_zendDb->setFetchMode(Zend_DB::FETCH_ASSOC);
            }


$resultIdentities = $this->_zendDb->fetchAll($dbSelect);
Code PHP :

            if (isset($origDbFetchMode)) {
                $this->_zendDb->setFetchMode($origDbFetchMode);
                unset($origDbFetchMode);
            }
        } catch (Exception $e) {
            /**
             * @see Zend_Auth_Adapter_Exception
             */
            require_once 'Zend/Auth/Adapter/Exception.php';
            throw new Zend_Auth_Adapter_Exception('The supplied parameters to Zend_Auth_Adapter_DbTable failed to '
                                                . 'produce a valid sql statement, please check table and column names '
                                                . 'for validity.', 0, $e);
        }
        return $resultIdentities;
    }





ma version de zend est la 1.11.8. et la table dans la bdd est correcte, j'ai testé la requete passée en argument de _authenticateQuerySelect(...) dans mon sgbd(MYSQL) et elle fonctionne ... (la requete testée est : " SELECT `users`.*, (CASE WHEN `password` = 'aaaaaaaa' THEN 1 ELSE 0 END) AS `zend_auth_credential_match` FROM `users` WHERE (`username` = 'admin') " ).


avez vous rencontré ce problème ? avez vous des solutions ?


Merci !

@+!

Hors ligne

 

#2 12-01-2012 10:44:17

bencoandco
Nouveau membre
Date d'inscription: 12-01-2012
Messages: 3

Re: Problème formulaire authentification avec zend

J'ai déjà tenté de remplacer:


$auth   = Zend_Auth::getInstance();
$result = $auth->authenticate($adapter);



par:


$result = $adapter->authenticate();


   

mais ça ne marche pas ce qui est normal je penses et j'ai le msg d'erreur suivant :


Notice: Undefined variable: auth in C:\xampp\htdocs\Site\application\controllers\IndexController.php on line 90

Fatal error: Call to a member function authenticate() on a non-object in C:\xampp\htdocs\Site\application\controllers\IndexController.php on line 90

Dernière modification par bencoandco (12-01-2012 10:45:08)

Hors ligne

 

#3 12-01-2012 10:47:37

bencoandco
Nouveau membre
Date d'inscription: 12-01-2012
Messages: 3

Re: Problème formulaire authentification avec zend

Après enquête, il semblerait qu'il y ait une fonction qui s'appelle elle même, d'après ce que j'ai déduit & testé :


mon script fait appel à la fonction authenticate qui se trouve dans /zend/auth/adapter/dbtable.php l 365

cette fonction fait appel à _authenticateQuerySelect dans le même fichier qui fait appel à fetchAll l 485 qui se trouve dans le fichier /zend/db/adapter/abstract.php et qui fait appel à query() ligne 741 dans le meme fichier

dans cette fonction il y a un appel à la fonction execute() d'un objet statement cette fonction se trouve dans le fichier /zend/db/statement.php l 294 cette fonction fait appel à _execute qui se trouve dans le fichier /zend/db/statement/pdo.php et elle est définie comme ceci :

Code PHP :

  public function _execute(array $params = null)
    {
       
      
       try {
            if ($params !== null) {
                return $this->_stmt->execute($params);
            } else {
                return $this->_stmt->execute();
            }
        } catch (PDOException $e) {
            require_once 'Zend/Db/Statement/Exception.php';
            throw new Zend_Db_Statement_Exception($e->getMessage(), (int) $e->getCode(), $e);
        }
       
    }





théoriquement cette ligne :

return $this->_stmt->execute($params);


fait appele à execute dans execute si je ne me trompe pas ? Ce qui est une erreur !


quelqu'un a t il une réponse ou solution ? Peut-être dois je tester la version au-dessus ? Ou faut réécrire la fonction _execute ?

Merci !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages