登录单页网站时遇到问题

时间:2012-11-27 20:59:24

标签: php javascript login logout

我的登录过程出现问题。我正在使用会话和重新加载,以便我可以拥有一个页面网站。在Chrome上,这会增加一个?所以url的结尾(任何时候?存在,登录不起作用)。在Firefox和Chrome上,登录注销过程只能运行一次,然后登录停止工作。我在index.php页面上有一个if语句,基本上是:

if($_SESSION["LoggedIn"] != true) {
    /*display login button*/
}
else {
    /*display logout button*/
}

然后我设置我的脚本文件:

    $("#toolbarTitle-Login").click(function() {
        var loginEmail = $("#toolbarTextbox-Email").val();
        var loginPassword = $("#toolbarTextbox-Password").val();
        if (loginEmail != "") {
            $("#toolbarPleaseWait").text("Please wait...");
            $.post(
                'ajax/loginProcess.php', 
                {
                    'email': loginEmail,
                    'password': loginPassword
                },
                function (response) {
                    window.location.reload(true);
                }
            );
        }
    });

    $("#toolbarTitleLoggedIn-Logout").click(function() {
        $("#toolbarPleaseWait").text("Logging out...");
            $.post(
                'ajax/logoutProcess.php', 
                {
                },
                function (response) {
                    window.location.reload(true);
                }
            );
    });

然后我的处理页面loginProcess.php:

<?php
session_start();

include "../incl/databaseConnection.php";

$email = $connection->real_escape_string($_POST["email"]);
$password = $connection->real_escape_string(md5($_POST["password"]));

$sql = "SELECT clientId
        FROM clients
        WHERE (studentEmail = '$email' AND studentPassword = '$password') OR (parentEmail = '$email' AND parentPassword = '$password');";

if (!$result = $connection->query($sql)) {
    die ('There was an error running the query [' . $connection->error . ']');
}

$rows = $result->num_rows;
$row = $result->fetch_assoc();

if ($rows == 1) {
$_SESSION["loggedIn"] = true;
$_SESSION["clientId"] = $row["clientId"];

}
else if ($rows > 1) {
echo 'CHOOSE BETWEEN ACCOUNTS';
}
else if ($rows == 0) {
echo 'SHOW ERROR MESSAGE';
}

$connection->close();

?>

下一步logoutProcess.php:

<?php
session_start();
session_unset();

?>

2 个答案:

答案 0 :(得分:2)

终于得到了该死的东西!您需要在session_destroy()文件中使用logout.php并在JS中使用AJAX调用,以下是片段:

在你的JS中:

$.ajax({
    url: "logout.php",
    context: document.body
}).done(function() { 
    window.location.reload(true);
});

在你的logout.php文件中:

<?php
session_start();

session_destroy();
?>

这应该有理想的结果。

还要注意,我没有遇到同样的问题?在URL和URL处,根本不确定它的来源。刚刚提供了最简单的解决方案(至少对我而言)。

答案 1 :(得分:1)

好的,所以它最终成为一个非常简单的修复。我没有将return false;包含在我的ajax帖子下面。这导致页面在我按下提交按钮后重新加载(此操作发生在jquery触发之前),这是<input type="submit">的自然行为。 “?”这表明没有定义任何POST变量,或者它们旁边会列出它们。

    $("#toolbarTitle-Login").click(function() {
        var loginEmail = $("#toolbarTextbox-Email").val();
        var loginPassword = $("#toolbarTextbox-Password").val();
        if (loginEmail != "") {
            $("#toolbarPleaseWait").text("Please wait...");
            $.post(
                'ajax/loginProcess.php', 
                {
                    'email': loginEmail,
                    'password': loginPassword
                },
                function (response) {
                    window.location.reload(true);
                }
            );
            return false;
        }
    });


    $("#toolbarTitleLoggedIn-Logout").click(function() {
        $("#toolbarPleaseWait").text("Logging out...");

        $.ajax({
            url: "ajax/logoutProcess.php",
            context: document.body
        }).done(function() { 
            window.location.reload(true);
        });
        return false;
    });