PHP奇怪的比较

时间:2015-01-03 18:40:43

标签: php

我在注册表中有两个输入,一个用于登录,一个用于密码。在调用AJAX之后,我正在尝试验证这些数据,我正在使用以下函数:

function test_input($data) {

if( $data == $_POST["login"] && $data == "" ){
    $GLOBALS["message"] .= "<p>Empty login.</p>";
    return;
    }

elseif( $data == $_POST["pwd"] && $data == "" ){
    $GLOBALS["message"] .= "<p>Empty password.</p>";
    return;
    }
echo 'Good job.';
}

当我点击提交按钮而没有写任何东西时,我得到了答案:

Empty login
Empty login

当我在其中一个中写东西或两个都验证没问题。为什么呢?

编辑 - 缺少代码:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $login = test_input($_POST["login"]);
  $pwd = test_input($_POST["pwd"]);
if($message!= ""){
    echo $message;
    }
  else{
    echo 'OK';
    }
}

1 个答案:

答案 0 :(得分:0)

也许重构一下:

function test_input($data, $field) {
    if( $field == "login" && $data == "" ){
        return "<p>Empty login.</p>";
    }
    elseif( $field == "pwd" && $data == "" ){
        return "<p>Empty password.</p>";
    }
    echo 'Good job.';
}

$message = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $message .= test_input($_POST["login"], "login");
    $message .= test_input($_POST["pwd"], "pwd");
    if($message!= ""){
        echo $message;
    }
    else{
        echo 'OK';
    }
}