javascript - 在同一页面登录,检查SESSION,无需重新加载

标签 javascript php jquery ajax authentication

目前,我的网站上每个页面的顶部都有一个表单,可让用户输入用户名和密码进行登录。

但是单击按钮后,我使用 JQuery AJAX 方法将其提交到 login.php,无需刷新页面,它会验证凭据并返回用户,无论提交的用户名/密码是否有效。

最后,结果返回到用户尝试登录的页面。

我还希望页面在成功登录后消失,并替换为“欢迎回来,用户!”

一切正常,除了我希望在不重新加载页面的情况下发生这种情况。这是我到目前为止所拥有的:-

如果未设置 session ,则显示表单,否则显示欢迎回来,用户:-

<div class="user">
<?php
    if (isset($_SESSION['logged_user'])) {
        $logged_user = $_SESSION['logged_user'];
        print("<p>Welcome back, $logged_user!</p>");
    }
    else {
        print('<div class="forms">
            <form id="login">
                <label>Username <input type="text" name="username" id="username"></label>
                <label>Password <input type="text" name="password" id="password"></label>
                <input type="submit" class="submit" value="Login" id="login">
                <span class="error"></span>
            </form>
        </div>');
    }
?>
</div>

Javascript/AJAX 处理提交:

$(document).ready(function() {
    $("#login").click(function() {
        var username = $("#username").val();
        var password = $("#password").val();
        var dataString = 'username='+username+'&password='+password;
        if(username != '' && password != '') {
            $.ajax({
                type: "POST",
                url: "login.php",
                data: dataString,
                success: function(responseText) {
                if(responseText == 0) {
                    $("error").html("Invalid login.");
                }
                else if(responseText == 1) {
                    window.location = 'index.php';
                }
                else {
                    alert('Error');
                }
            }
        });
    }
    return false;
});

我的login.php一切正常。

现在,我的页面更新以显示欢迎回来消息的唯一方法是包含以下行:window.location = 'index.php'; 以便页面重新加载。但如果没有这个,用户将成功登录,但将无法看到此内容。

有没有办法在没有 AngularJS 的情况下做到这一点?这是一个类,我们不允许使用框架,这非常令人沮丧!谢谢!

最佳答案

您可以使用动态 HTML (DHTML)。

您不重定向成功函数,而是使用 jquery 更改内容。

类似这样的事情:

success: function(responseText) {
    if(responseText == 0) {
        alert('Invalid login');
    }
    else if(responseText == 1) {
        // Success
        $('#login').parent().append('<p>Welcome back, '+username+'!</p>');
        $('#login').remove();

    }
    else {
        alert('Another Invalid login');
    }
}

API登录返回:

  • 如果无效则为 0
  • 如果有效则为 1

关于javascript - 在同一页面登录,检查SESSION,无需重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29203358/

相关文章:

javascript - iPad safari 在滑动屏幕之前不会显示加载的图像

javascript - 根据新数据检查旧数据,仅处理工作表上谷歌应用程序脚本中的实际更改值

php - PHP邮件功能无法完成电子邮件的发送

jquery - 如何删除 jquery ui Accordion 中的左右边距?

javascript - 如何使用按钮从 Canvas 保存图像?

javascript - CSS 升级所有元素

php - 创建自己的 $_SESSION 类变量?

php - Eloquent - 使用字符串值而不是列标题连接子句

javascript - 动态添加时 HTML 标签不会附加到输入

jquery - jquery中的if条件?