我有一个登录表单index.php
,其输入为ID和Password.I获取输入并将其提交给另一个名为的文件
login_user.php
它接受数据。
如果凭据正确,则用户将正确路由到主页。但是当用户输入了错误的登录详细信息时,我必须检查DB中存储的值。所以我认为variable
中使用了login_user.php
,然后include
使用了index.php
{1}}并在div
中打印错误。到目前为止,我制作了这段代码。
<div class="alert alert-warning alert-dismissible" role="alert" id="alert_login_error">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong id="error_flag">
Invalid Login Details
</strong>
</div>
<?php
include "login_user.php";
if (empty($error)) {
echo "<script> $('#alert_login_error').hide(); console.log('empty');</script>";
}
else {
echo "<script> $('#alert_login_error').show();console.log('not empty');</script>";
}
?>
login_user.php
文件有此
$error = ""; #this is set at the start of the file
$num_rows = mysql_num_rows($result);
if ($num_rows > 0) {
#User is redirected to Home Page if details are correct
#If the password is wrong then in a function
$error = "Invalid password";
header('Location: index.php');
}
else {
$error = "Invalid Login details";
header('Location: index.php');
}
此代码的作用
加载
index.php
时,隐藏了定义错误的div
。这很好。但是当用户输入错误的登录输入时。然后
div
也设置为隐藏
我不明白我在哪里弄错了。如果需要更多的东西,请询问,以便我能提供。谢谢!
答案 0 :(得分:2)
您正在使用header('location: index.php')
代码立即重定向用户;一旦发生这种情况,$error
会在页面加载干净的情况下被清除干净,这意味着您的if (empty($error))
条件将始终评估为true
。
答案 1 :(得分:1)
我个人使用$ _SESSION变量通过PHP脚本管理错误。
你的div将是
<div id='error'> {$_SESSION['error']} </div>
你在显示它之后就把它杀了。
这是heredoc语法。对不起,如果你不习惯的话。
通过这种方式,您不必管理显示/隐藏div,因为如果$_SESSION['error']
为空,div将为空
注意:我不知道这是否是一个好的解决方案,但它至少是一个有效的解决方案!
所以你的PHP脚本将是:
if ($num_rows > 0) {
#User is redirected to Home Page if details are correct
#If the password is wrong then in a function
$_SESSION['error'] = "Invalid password";
header('Location: index.php');
}
else {
$_SESSION['error'] = "Invalid Login details";
header('Location: index.php');
}