[Risolto] Problema Con Il Login

Ciao ragazzi, ho un problema con il login del mio progetto,

prima funzionava ora per capriccio non va più…

sto utilizzando PostgreSQL come DBMS,

non so se può essere un’informazione utile

ho inserito come allegato l’errore che ottengo quando provo a loggarmi

grazie per l’aiuto :)

credo che il problema si riduca alla query:


$seller = Seller::model()->find('LOWER(username)=?', array($username));

che stranamente restituisce questa interrogazione:

[font="Lucida Console"]SELECT * FROM "plus_sellers" "t" [color="#FF0000"]WHERE (id=)[/color] AND (LOWER(username)=?) LIMIT 1[/font]

ho evidenziato in rosso la parte errata della query,

come posso sistemarla? ho provato anche:


$seller = Seller::model()->findByAttributes(array('username'=>$username));

ma l’interrogazione risultante contiene sempre [font=“Lucida Console”][color="#FF0000"]WHERE (id=)[/color][/font]

come posso fare? :blink:

ho risolto rimpiazzando la query precedente con una creata da me tramite il metodo createCommand

posto l’intero codice di autenticazione nel caso servisse a qualcuno in futuro:


public function authenticate() {

    $username = strtolower($this->username);

    $seller = Yii::app()->db->createCommand()

                            ->select()

                            ->from('plus_sellers')

                            ->where('username=:username', array(':username'=>$username))

                            ->queryRow();

    if ($seller === null)

        $this->errorCode = self::ERROR_USERNAME_INVALID;

    else if($seller['password'] != md5($this->password))

        $this->errorCode = self::ERROR_PASSWORD_INVALID;

    else {

        $this->_id = $seller['id'];

        $this->username = $seller['username'];

        $this->errorCode = self::ERROR_NONE;

    }

    return $this->errorCode == self::ERROR_NONE;

}

mi piacerebbe sapere però perchè ad un certo punto il [font=“Lucida Console”]find()[/font] di prima ha smesso di funzionare :mellow:

Non e’ che hai qualche default scope settato su Seller?

sei un cecchino zaccaria, hai fatto centro di nuovo!

ecco la soluzione, nel caso servisse a qualcuno:


public function defaultScope() {

    $scope = array(

        'condition' => 'id=' . Yii::app()->user->id

    );

    return isset(Yii::app()->user->id) ? $scope : array();

}

grazie zac ;)

Yeah!