如何验证用户的帐户是否已在PHP中被接受或仍处于待处理状态?

时间:2019-05-24 05:42:35

标签: php mysql

我需要一个php文件,如果用户尝试登录,该php文件将获取用户名和密码,如果正确,它将继续检查状态,如果该用户的帐户已被批准或仍处于待处理状态。因此,如果已批准的用户帐户将打印“ 1”,如果仍在待处理中,则将打印“ 2”,如果用户名和密码不正确,它将仅打印“ 3”。问题是在PHP文件检查用户名和密码后,它应该在打印“ 1”或“ 2”之前再次检查数据库该帐户是否已被首先批准或仍在进行中

<?php

$user_name = filter_input(INPUT_POST, "user_name");
$user_pass = filter_input(INPUT_POST, "user_pass");

$mysqli = new mysqli("server", "username", "password", "db");

$result = mysqli_query($mysqli, "SELECT * FROM user_info WHERE user_name='$user_name' AND user_pass = MD5('".$user_pass."')");

if ($data = mysqli_fetch_array($result)){ 
    $status = mysqli_query($mysqli, "SELECT `status` FROM `user_info` WHERE `user_name`='$user_name'");
    $data2 = mysqli_fetch_object($status);
    if  ($data2 = "Approved") {
        echo '1';
    } else if ($data2 = "Pending") {
        echo '2';
    }
} else {
echo '3';
}
?>

1 个答案:

答案 0 :(得分:1)

您不需要执行两个查询。 $data包含该用户的行,因此您只需在此处查看状态即可。

<?php

$user_name = filter_input(INPUT_POST, "user_name");
$user_pass = filter_input(INPUT_POST, "user_pass");

$mysqli = new mysqli("server", "username", "password", "db");

$result = mysqli_query($mysqli, "SELECT * FROM user_info WHERE user_name='$user_name' AND user_pass = MD5('".$user_pass."')");

if ($data = mysqli_fetch_array($result)){ 
    if ($data['status'] == 'Approved') {
        echo '1';
    } else if ($data['status'] = "Pending") {
        echo '2';
    }
} else {
    echo '3';
}
?>