Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-08-2008 15:10:31

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Zend_Auth_Adapter_DbTable et Oracle

Bonjour

je tente une connexion pour l'authentification sur une base oracle
mon Zend_Auth_Adapter_DbTable me produit

Code:

SELECT DISTINCT
    usr.*,
    usr_pwd = 'MyPass' AS zend_auth_credential_match
FROM usr

Mais j'obtiens une exception:
The supplied parameters to Zend_Auth_Adapter_DbTable failed to produce a valid sql statement, please check table and column names for validity.

avec mon outil SQL je constate que Oracle ne supporte pas

Code:

usr_pwd = 'MyPass' AS zend_auth_credential_match

il plante sur le "="
si je commente la fin de la ligne la requête s'exécute correctement

merci de votre aide
A+JYT

Hors ligne

 

#2 28-08-2008 15:56:43

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Zend_Auth_Adapter_DbTable et Oracle

Hello,

Code:

SELECT usr.*, (CASE WHEN usr_pwd = 'MyPass' THEN 1 ELSE 0 END) AS "zend_auth_credential_match"
FROM utilisateurs
WHERE (usr_login = 'moi')

C'est le code normalement produit pour Oracle en 1.6.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#3 28-08-2008 18:01:32

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Zend_Auth_Adapter_DbTable et Oracle

Yo mais comment je fais ça en 1.0.4   ???
ça veux dire que Zend_Auth ne fonctionnait pas en 1.0.4 ??


car si je regarde le source

Code:

            $credentialExpression = new Zend_Db_Expr(
                $this->_zendDb->quoteInto(
                    $this->_credentialColumn
                    . ' = ' . $this->_credentialTreatment, $this->_credential
                    )
                . ' AS zend_auth_credential_match'
                );

merci
A+JYT

Dernière modification par sekaijin (28-08-2008 18:02:04)

Hors ligne

 

#4 28-08-2008 18:28:19

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Zend_Auth_Adapter_DbTable et Oracle

Hello,

Yo mais comment je fais ça en 1.0.4   ???
ça veux dire que Zend_Auth ne fonctionnait pas en 1.0.4 ??

Exactement. J'avais posté sur une issue à l'époque (http://framework.zend.com/issues/browse/ZF-1509).

Avec http://framework.zend.com/issues/browse/ZF-2236.

A+

Dernière modification par mikaelkael (28-08-2008 18:30:01)


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#5 01-09-2008 10:09:02

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Zend_Auth_Adapter_DbTable et Oracle

Merci j'ai ajouté à mon projet class Fast_Auth_Adapter_DbTable extends Zend_Auth_Adapter_DbTable
dans laquelle j'ai redéfinis la requête

A+JYT

Hors ligne

 

#6 17-12-2008 09:40:13

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: Zend_Auth_Adapter_DbTable et Oracle

Bonjour,
J'utilise actuelle ment la version 1.7.1 et j'obtiens la même erreur :
Fatal error: 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.

Si j'affiche la requête générée, j'obtiens :
SELECT UTILISATEUR.*, (CASE WHEN PWD_USER = 'TEST' THEN 1 ELSE 0 END) AS "zend_auth_credential_match" FROM UTILISATEUR WHERE (COD_USER = 'TEST')

Donc la requête semble bien formée, et se lance dans mon client Oracle...

Je ne vois pas d'où peut venir le problème...

Auriez vous une idée?
J'utilise l'adapter Oracle, et j'arrive a former des requêtes dans mes contrôleurs.
Merci de votre aide.

Hors ligne

 

#7 17-12-2008 10:45:38

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Zend_Auth_Adapter_DbTable et Oracle

Hello,

J'utilise aussi Oracle avec la 1.7.1 et je n'ai pas de problème avec Zend_Auth_Adapter_DbTable. Je ne comprends pas, surtout que cela fonctionne dans ton client.

Tu peux modifier Zend/Auth/Adapter/DbTable.php, remplaces (ligne 392 à 394) :

Code:

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.');

par

Code:

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.' . $e->getMessage());

Et regardes à quoi correspond exactement ton exception.

Sinon pour les utilisateurs d'Oracle, j'ai patché une dizaine d'issues pour la sortie de la 1.7.2 la semaine prochaine.

A+

Dernière modification par mikaelkael (17-12-2008 10:46:08)


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#8 17-12-2008 10:52:24

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: Zend_Auth_Adapter_DbTable et Oracle

Merci pour cette réponse rapide.
J'ai mis aussi la requête:
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. Requête : '.$dbSelect->__toString(). '. Exception :'. $e->getMessage());

Voici mon erreur :

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. Requ괥 : SELECT UTILISATEUR.*, (CASE WHEN PWD_USER = 'TEST' THEN 1 ELSE 0 END) AS "zend_auth_credential_match" FROM UTILISATEUR WHERE (COD_USER = 'TEST'). Exception :911 ORA-00911: caractere non valide SELECT UTILISATEUR.*, (CASE WHEN PWD_USER = 'TEST' THEN 1 ELSE 0 END) AS "zend_auth_credential_match" FROM UTILISATEUR WHERE (COD_USER *= 'TEST');'

Hors ligne

 

#9 17-12-2008 11:01:14

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Zend_Auth_Adapter_DbTable et Oracle

Hello,

Je ne comprends pas le caratère invalide. Tu es en ZF1.7.1.

- adaptateur "oracle" ou "pdo_oci" ?
- quelle version d'Oracle ?
-as-tu modifié le fichier Zend/Auth/Adapter/DbTable.php ?
- comment gères-tu l'appel de Zend_Auth_Adapter_DbTable ?

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#10 17-12-2008 11:01:16

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: Zend_Auth_Adapter_DbTable et Oracle

Oulà, pardon, jai trouvé l'erreur, j'avais ajouté un ';' à la fin... C'était quand j'avais une autre erreur lorsque j'essayais de faire fonctionner un adapter ODBC, je pensais que c'était dû à ça, mais je n'ai pas remis à la normale en repassant à Oracle.
Désolé.

Dernière modification par Fuggerbit (17-12-2008 11:09:07)

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