-1

ログインプロセスに問題があります。単一ページのサイトを作成できるように、セッションとリロードを使用しています。Chromeでは、これにより?が追加されます したがって、URLの終わり(?が存在する場合は常に、ログインは機能しません)。また、FirefoxとChromeの両方で、ログインとログアウトのプロセスは1回だけ機能し、その後ログインは機能しなくなります。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();

?>
4

2 に答える 2

2

ついに気の利いたものが機能するようになりました!ファイルで使用し、JSでAJAX呼び出しを使用する必要があります。スニペットは次のとおりsession_destroy()です。logout.php

あなたのJSで:

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

そして、logout.phpファイルで:

<?php
session_start();

session_destroy();
?>

これにより、望ましい結果が得られるはずです。

また、私は?で同じ問題を経験していません。URLのとで、それがどこから来ているのかまったくわかりません。動作する最も単純なソリューションを提供しただけです(少なくとも私にとってはそうしました)。

于 2012-11-27T22:03:08.753 に答える
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;
    });
于 2012-11-28T01:25:56.850 に答える