7

ログインを確認するための非常に単純なPHP関数があります

function check_login($user, $pass) {
    if(!isset($user) || $user == '') {
        return  'Please enter a valid username';
    }
    else if(!isset($pass) || $pass == '') {
        return  'Please enter a valid password';
    }
    else {
        return 'true';
    }
}

エラー メッセージと false を同時に返し、文字列として「true」ではなく true を返すにはどうすればよいですか。お気に入り、

function check_login($user, $pass) {
    if(!isset($user) || $user == '') {
        return  'Please enter a valid username' //return false;
    }
    else if(!isset($pass) || $pass == '') {
        return  'Please enter a valid password' //return false;
    }
    else {
        return true;
    }
}

だから私は好きなものif(check_login($uname, $pword)){をチェックする代わりに好きなものをチェックすることができますif(check_login($uname, $pword)=='true'){:)

4

6 に答える 6

15

それが であるかどうかを確認して、そこから処理してみませんかtrue

$login = check_login('user', 'pass');

if($login === true)
    loginUser(); //login was successful, finalize or whatever
else
    echo $login; //error message
于 2012-09-28T04:13:54.637 に答える
9

使用できる別の方法は、クラス内にエラー メッセージを設定し、関数を呼び出して後でフェッチすることです。

  class exampleClass {
        private $error_message = '';

        function exampleFunction($argument) {

            if($argument == 'lemons') {
                return true;
            } else {
                $this->error_message = 'Argument was not lemons.';
                return false;
            }

        }

        function getErrorMessage() {
            return $this->error_message;
        }

    }

    $example_session = new exampleClass();

    if( ! $example_session->exampleFunction('apples') )
        echo $example_session->getErrorMessage();
于 2013-07-16T15:55:18.220 に答える
6

これはちょっと古い投稿であることは知っていますが、多くのレビューが寄せられています。それでは、ここで素晴らしい回答に別の回答を追加させてください。

1 つの解決策は、PHP スタイルのように参照によって変数を渡すことです。


擬似コード:

関数

 //Notice the '&' before the variable name. 
function check_login($user, $pass, &$message) {
    if(!isset($user) || $user == '') {
        $message["status"] = false;  //fail
        $message["message"] ='Please enter a valid username';
    }
    elseif(!isset($pass) || $pass == '') {
           $message["status"] = false;  //fail   
           $message["message"]=  'Please enter a valid password';
    }
    elseif (isset($pass) || $pass != ''){
         $message["status"] = true; //success
         $message["message"]=  'Username and password are valid';
        return true;
    }
       
    return false;//you can return from within the if condition if you wish
}

呼び出し:

/* $message variable will be assigned and populated in the function check_login() */


 
    if(check_login($uname, $pword, $message = []) === true )
    {
       //Do your stuff here
      //@message array is avaialble 
       echo message["message"];
    }
    else
    {
     //means false
     echo message["message"];
    }
于 2014-09-27T23:17:02.243 に答える
5

例外をスローしてみませんか

function check_login($user, $pass) {
    if (empty($user)) {
        throw new InvalidArgumentException('Please enter a valid username');
    }
    if (empty($pass)) {
        throw new InvalidArgumentException('Please enter a valid password');
    }
    return true
}

// snip

try {
    check_login($userValue, $passValue);
} catch (Exception $e) {
    // an error occurred
    echo $e->getMessage();
}
于 2012-09-28T04:20:09.143 に答える
0

echo と return の両方を使用できます。

function check_login($user, $pass) {
    if(!isset($user) || $user == '') {
    echo "Please enter a valid username";
        return false;
    }
    else if(!isset($pass) || $pass == '') {
    echo "Please enter a valid password";
        return false;
    }
    else {
        return true;
    }
}
于 2012-09-28T04:11:33.927 に答える
0

echo の代わりに変数を使用したり、echo よりもはるかに安全な return を使用したりできます。たとえば、この関数を html ヘッダーで実行したい場合、またはその前に実行したい場合は、ウェブサイトが読み込まれる前に生成されたテキストが表示されます。 .

代わりに変数を使用してください。

    function check_login($user, $pass) {
            if(!isset($user) || $user == '') {
            $var = "Please enter a valid username";
$var = array();
    $var['msg'] = "Please enter a valid username";
    $var['error'] = "false";
    return $var;

            }
            else if(!isset($pass) || $pass == '') {
            $var = array();
    $var['msg'] = "Please enter a valid username";
    $var['error'] = "false";
    return $var;
            }
            else {
                return true;
            }
        }

これが、エラーを表示したい場所で変数を使用し、ステートメントをチェックしたい場所で真と偽でチェックする両方を同時に使用できる方法です。

エラーメッセージで $var 変数を使用したい場合は、これを使用してください -

echo $var['msg'];

不正使用をチェックしたいとき

$var['error'] == 'false'
于 2012-09-28T04:20:45.570 に答える