我需要一个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';
}
?>
答案 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';
}
?>