繁体   English   中英

如果登录过程失败,请留在同一页面上

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM