0

次のスクリプトがあります。

function canLogin($mail, $password) {
    if( isset($mail, $password) ) {
        $login = dbFind('users', array("mail" => (string)"$mail", "pass" => (string)"$password"), true);
        var_dump($login);
        if($login)
            { return (string)$login['_id']; }
            else { return false; }
    } else { return false; }
}

関数 dbFind は次のとおりです。

function dbFind($collIn, $obj, $one = false) {
    global $db;

    $collection = $db->$collIn;

    if($one == true)
        return $collection->findOne($obj);
        else return $collection->find($obj);
}

コードの最初のスニペットからわかるように、var_dump を使用して $login 変数の内容を確認し、その後、変数が設定されているかどうかを確認しています。

正しいログインがある場合、var_dump はデータベースから正しいオブジェクトを返します。それ以外の場合は NULL を返します。問題は、var_dump の直後の if ステートメントで常に false が返されることです。

私は何が欠けていますか?前もって感謝します。

4

3 に答える 3

0
if($login != NULL){
return (string)$login['_id'];
}else{
return false;
}

私はそのような問題を抱えていました、そしてこれはうまくいきました、そしてそれは働いています。

于 2012-12-26T11:45:57.037 に答える
0
If (isset($login)){
   //do what you need
}
于 2012-12-26T11:43:11.693 に答える