bencoandco
Messages postés165Date d'inscriptionsamedi 8 mai 2010StatutMembreDernière intervention 3 janvier 2015
-
10 janv. 2012 à 11:43
bencoandco
Messages postés165Date d'inscriptionsamedi 8 mai 2010StatutMembreDernière intervention 3 janvier 2015
-
13 janv. 2012 à 17:32
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 :
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'
);
après observation il semblerait que ce soit cette ligne qui fasse tout planter :
$result = $auth->authenticate($adapter);
et plus précisément dans le fichier /zend/auth/adapter/dbtable.php la ligne 483 en gras ci-dessous :
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);
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 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 ?
bencoandco
Messages postés165Date d'inscriptionsamedi 8 mai 2010StatutMembreDernière intervention 3 janvier 2015 10 janv. 2012 à 12:48
Déjà essayé ça ne marche pas ce qui est normal je penses j'ai le msg d'erreur suivant :
[b]Notice: Undefined variable: auth in C:\xampp\htdocs\Site_UJLV\application\controllers\IndexController.php on line 90
Fatal error: Call to a member function authenticate() on a non-object in C:\xampp\htdocs\Site_UJLV\application\controllers\IndexController.php on line 90/b
bencoandco
Messages postés165Date d'inscriptionsamedi 8 mai 2010StatutMembreDernière intervention 3 janvier 2015 11 janv. 2012 à 00:35
J'ai avancé sur mon problème, 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 :
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 ?
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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?