php函数返回false和$ variable值不起作用

时间:2014-10-03 22:48:20

标签: php function variables return

我有一个登录功能,如果为false,我想返回一个变量值:

function login($email, $password, $mysqli) {
[...]
// check if username exists
if ($stmt->num_rows == 1) {
    // check
if ($db_password == $password) {
    //check
} else {
    // Invalid password
    $error = '2';
    return false;
} else {
        // No user exists.
        $error = '1';
        return false;

这是process_login

// the login function is included in this page
if (login($email, $password, $mysqli) == true) {
    // Login success
    header('Location: /index.php');
} else {
    // Login failed
    header("Location: /login.php?error=$error");
}

我希望函数返回错误变量的值,但它不起作用。

怎么了?

谢谢!

3 个答案:

答案 0 :(得分:0)

这应该可以解决问题:)

function login($email, $password, $mysqli) {
[...]
// check if username exists
if ($stmt->num_rows == 1) {
    // check
if ($db_password == $password) {
    //check
    return true;
} else {
    // Invalid password
    $error = '2';
    return $error;
} else {
        // No user exists.
        $error = '1';
        return $error;
......


// the login function is included in this page
if (login($email, $password, $mysqli) === true) { //check for type (bool)true
    // Login success
    header('Location: /index.php');
} else {
    // Login failed
    header("Location: /login.php?error=$error");

}

答案 1 :(得分:0)

你不能在同一个if语句中有两个else条件,你应该返回变量$ error而不是返回false,如果你真的需要知道错误号但只是你已知的。正如一位用户告诉您尝试不告诉用户确切的登录错误。只需告诉客户端登录/密码详细信息不正确

答案 2 :(得分:0)

如前所述,我们不应该让用户知道用户名或密码是错误的。 但这只是一个练习(我还在开始使用php)。

我们可以安全地删除其他两个。

// the login function is included in this page
if (login($email, $password, $mysqli)) {
    // Login success
    header('Location: /index.php');
} else {
    // Login failed
    header("Location: /login.php?error=$error");
}

无需比较,只有在login()返回true时才会传递

now