<?php
if(isset($_POST['submit'])) {
$UserName = mysql_real_escape_string($_POST['UserName']);
$password = mysql_real_escape_string($_POST['password']);
$checkbox = isset($_POST['remember_me']);
if(user_exists ($UserName, $db_connect)) {
$result = mysqli_query ($db_connect, "SELECT password FROM users WHERE UserName = '$UserName'");
$retrievepassword = mysqli_fetch_assoc($result);
if(md5($password) !== $retrievepassword['password']) {
$alert = "Invalid Password";
} else {
$_SESSION['UserName'] = $UserName;
if($checkbox == "on") {
setcookie("UserName", $UserName, time()+3600);
}
header("location: profile.php");
}
} else {
$alert = "Username doesn't exit in database";
}
}
?>
我已经制作了以下登录脚本,该脚本工作正常,现在我想在登录前检查用户的状态,如果用户处于活动状态,它将登录并且如果它的请求是待处理或拒绝,它将显示错误。 我完成了第一部分,并对我要检查状态的其他部分感到困惑。
根据我的代码,有人可以帮助我吗?
答案 0 :(得分:0)
有两种方法:
where
中添加条件以检查用户是否处于活动状态
或不。 if
条件验证并导航到正确的页面
相应地。另外,请更正SQL以使用预准备语句。
$stmt = $dbConnection->prepare('SELECT * FROM users WHERE
UserName = ? AND password = ?');
$stmt->bind_param('s', $UserName);
$stmt->bind_param('s', md5($password));
$stmt->execute();
答案 1 :(得分:0)
我假设您的数据库中有一列存储用户状态。 Sooo ..您的问题的答案是,在检查您的数据库中是否存在用户名后,检查状态是否为“活动”。如果不是,则只显示错误消息。 您可能会想到另一种查询数据的方法,例如:
SELECT * FROM USERS WHERE USERNAME = 'username' AND PASSWORD = 'password' AND STATUS = true
如果它没有返回任何内容,你可以立即确定它是否有效。
我希望这会有所帮助。 :)
答案 2 :(得分:0)
您可以在检查有效密码后检查状态并返回相应的消息。请尝试以下代码:
if(user_exists ($UserName, $db_connect))
{
$result = mysqli_query ($db_connect, "SELECT password,status FROM users WHERE
name = '$UserName'");
$retrievepassword = mysqli_fetch_assoc($result);
if(md5($password) !== $retrievepassword['password'])
{
$alert = "Invalid Password";
}
else
{
//check Status
if($retrievepassword['status'] == 1) //whatever condtion to match
{
$_SESSION['UserName'] = $UserName;
if($checkbox == "on")
{
setcookie("UserName", $UserName, time()+3600);
}
header("location: profile.php");
}
else
{
$alert = "User Not active"; //Message to display
}
}
}
else
{
$alert = "Username doesn't exit in database";
}
答案 3 :(得分:0)
首先,我想指出你在没有启动会话的情况下使用了$ _SESSION。要做到这一点,你必须写
session_start();
在代码的开头。
要验证用户是否已登录,请在session_start()下面写下:
if(isset($_SESSION['UserName']) or isset($_COOKIE['UserName'])){
header("location: profile.php");
}
如果您不知道如何检查profile.php,如果用户在此处登录则是如何进行的:
PS:我建议您创建一个check.php文件,以便将其包含在为登录用户保留的页面中。
check.php
if(!isset($_SESSION['UserName']) or !isset($_COOKIE['UserName'])){
// Redirect to login or enter what you want to happen if the user is not logged in
}