Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-11-2010 13:36:09

neilime
Membre
Date d'inscription: 28-04-2009
Messages: 42

[Zend_Auth]getResultRowObject() transforme les int en string

Bonjour,

Pour la connexion des utilisateurs j'effectue le code suivant :

Code:

<?php
$oDbAdapter = Zend_Db_Table::getDefaultAdapter();
            $oAuthAdapter = new Zend_Auth_Adapter_DbTable($oDbAdapter);

            //On indique que la table des comptes utilisateurs est 'utilisateur'
            //puis on indique les colonnes à utiliser pour l'identifiant et le mot de passe
            $oAuthAdapter->setTableName('USER')
            ->setIdentityColumn('USER_LOGIN')
            ->setCredentialColumn('USER_PASSWORD');

            //On affect notre variables postées à tester
            $oAuthAdapter->setIdentity($this->_getParam('user_login'))
            ->setCredential(md5($this->_getParam('user_password')));

            //On essaie de ce connecter
            $oAuth = Zend_Auth::getInstance();
            $oLoginResult = $oAuth->authenticate($oAuthAdapter);

            if($oLoginResult->isValid()){
                $aUserDatas = $oAuthAdapter->getResultRowObject();
                                ...
?>

Le problème est que getResultRowObject transforme les valeurs int de la table USER en string.
Je ne voit pas comment respecter les types avec cette méthode...

Merci d'avance pour vos réponses.

Dernière modification par neilime (09-11-2010 13:36:40)

Hors ligne

 

#2 09-11-2010 18:37:04

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Zend_Auth]getResultRowObject() transforme les int en string

Il n'y a pas vraiment de types en PHP, donc je vois mal comment ça pourrait être géré comme il le faut.

Hors ligne

 

#3 09-11-2010 19:25:19

neilime
Membre
Date d'inscription: 28-04-2009
Messages: 42

Re: [Zend_Auth]getResultRowObject() transforme les int en string

Il n'y a pas vraiment de types en PHP, donc je vois mal comment ça pourrait être géré comme il le faut.

Ah bon ???

Voilà pour mon cas :

Structure SQL :

CREATE TABLE IF NOT EXISTS `USER` (
  `USER_ID` int(11) NOT NULL auto_increment,
  `USER_LOGIN` varchar(250) NOT NULL,
  `USER_PASSWORD` varchar(250) NOT NULL,
  `USER_EMAIL` mediumtext NOT NULL,
  `USER_DATE` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `USER_UPDATE` timestamp NOT NULL default '0000-00-00 00:00:00',
  `USER_LAST_VISITE_DATE` timestamp NOT NULL default '0000-00-00 00:00:00',
  `USER_SUBSCRIPTION_KEY` varchar(250) default NULL,
  `USER_CONFIGURATION_ID` int(11) NOT NULL,
  `USER_RIGHT_ID` int(11) NOT NULL,
  `USER_STATUS_ID` int(11) NOT NULL,
  PRIMARY KEY  (`USER_ID`),
  KEY `FK_REFERENCE_23` (`USER_STATUS_ID`),
  KEY `FK_REFERENCE_24` (`USER_CONFIGURATION_ID`),
  KEY `FK_REFERENCE_RIGHT` (`USER_RIGHT_ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=28 ;


USER_RIGHT_ID est bien de type int

Mais si je fait cela :

gettype($aUserDatas->USER_RIGHT_ID); cela me retourne string

et donc si je fait $aUserDatas->USER_RIGHT_ID === 3 (en supposant que la valeur dans la table est égale à 3)
Cela me retournera forcément false.

Cela veux dire que les valeurs résultant de la table ne sont pas casté en fonction du type SQL

Hors ligne

 

#4 10-11-2010 18:27:44

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Zend_Auth]getResultRowObject() transforme les int en string

USER_RIGHT_ID est de type int dans ta base de données...

Tu peux faire ($aUserDatas->USER_RIGHT_ID == 3), sinon tu peux t'amuser à faire ((int)$aUserDatas->USER_RIGHT_ID === 3), mais j'ai du mal à voir l’intérêt.

Hors ligne

 

#5 10-11-2010 20:32:28

neilime
Membre
Date d'inscription: 28-04-2009
Messages: 42

Re: [Zend_Auth]getResultRowObject() transforme les int en string

Je veux simplement respecter les types entre base de donnée et php. (pas seulement que pour les int d'ailleurs).
Pour un souci de performance et de conformité

Hors ligne

 

#6 11-11-2010 18:34:09

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [Zend_Auth]getResultRowObject() transforme les int en string

Manipulation des types

J'espère que ça pourra t'aider.

Hors ligne

 

#7 11-11-2010 20:35:06

neilime
Membre
Date d'inscription: 28-04-2009
Messages: 42

Re: [Zend_Auth]getResultRowObject() transforme les int en string

Bon j'ai réussi à voir d'où venait le problème...

En fait c'est l'adapter pdo_mysql qui transforme les valeurs en String...
En revanche avec l'adapter mysqli je ne rencontre pas ce problème.

Donc il faut que je trouve un moyen de paramétrer le comportement de pdo_mysql.

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