[英]Stay on the same page if login process failed
我有3个php页面,分别是index.php,login.php和loginSuccess.php。index.php仅包含登录表单,login.php包含用于登录过程的php代码。
<?php
session_start();
include './dbConnection.php';
$name = mysql_real_escape_string($_POST['userNameText']);
$password = mysql_real_escape_string($_POST['passwordText']);
$userName = stripslashes($name);
$userPassword = stripslashes($password);
$loginQuery = "SELECT * FROM users WHERE User_Name ='$userName' AND Password ='$userPassword'";
$query = mysql_query($loginQuery);
$result = mysql_num_rows($query);
if($result == 1){
$_SESSION['userName'] = $userName;
header("Location: loginSuccess.php");
}else{
header("Location: index.php");
}
?>
如果用户键入错误的登录信息,我想做的是停留在index.php中,并显示一条错误消息。 我在下面有一个jquery函数,我想在login.php的else条件中调用它。我该怎么做? 感谢帮助。
$(function(){
$('#errorDiv').fadeIn();
});
一种简单的方法是这样的:
更改
header("Location: index.php");
至
// This is a bit rough, but, I'm guessing you're learning PHP
// so for now it'd do
header('Location: index.php?login=false');
然后在index.php中添加类似
if ('false' === $_GET['login']) {
echo 'Login failed!';
}
然后您会收到一条漂亮的消息,提示“登录失败!” 当...登录失败时。
这绝不是实现此目的的“正确”方法,但是,它将帮助您学习所需的逻辑,以使此类工作正常进行。
这是一个宽松的示例,但希望您能从中看到逻辑。
您可能具有一个可以自行发布的登录表单。 有点像这样:
<form method="POST action="?login">
<input type="text" name="username" />
<input type="password" name="password" />
</form>
然后,在index.php
页面的顶部,您可以包含login.php
文件。
<?php
if(isset($_GET['login']){
include 'login.php';
}
?>
无论您想在何处使用JavaScript,都应执行相同的操作。
<?php if(isset($_GET['login']){ ?>
<script type="text/javascript>
$(function(){
$('#errorDiv').fadeIn();
});
</script>
<?php } ?>
如果用户成功登录,则只需重定向到loginSuccess.php
。 如果不是,则一切再次加载。
您不能将jQuery代码放在login.php
的else条件中,因为它仍然会执行重定向。 我的建议是,将错误消息存储在会话变量中,然后继续重定向回index.php
,在其中检查是否设置了该会话变量。 如果是这样,则可以显示错误消息,然后“取消设置”该会话变量。
的index.php
<?php if (isset($_SESSION['error'])): ?>
<p class="error-message"><?php echo $_SESSION['error']; ?></p>
<?php unset($_SESSION['error']); ?>
<?php endif; ?>
<form>...</form>
的login.php
...
else {
$_SESSION['error'] = 'the error message';
header('Location: index.php');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.