0

全てにおいて良い日、

ページにログインするときに PHP と jquery のモーダル ダイアログ ボックスを使用しています。その後、別のページにリダイレクトしたいと考えています。しかし、別のページにリダイレクトすると、モーダル ボックスに表示されます。しかし、モーダルを閉じようとしましたが、別のページにリダイレクトできません。header()php を使用してページをリダイレクトしたいと考えてい ます。これを正しい方法で行う方法はありますか?これは、ログインページを使用する方法です。

$("form#formAction").on("submit", function (e) {
    e.preventDefault();
    $.ajax({
        type: "POST",
        url: "login-process.php",
        data: $(this).serialize(),
        success: function (data) {
            $("input#username").val("");
            $("input#password").val("");
            $("input#username").focus();

        }
    });
});

login.php

$data = array (
        'username' => $_POST["username"],
        'password' => $_POST["password"]
        );

$sql = "SELECT id, role FROM user WHERE username=:username AND password=:password";
$STH = $DBH->prepare($sql);
$STH->execute($data);

$data = $STH->fetchAll(PDO::FETCH_ASSOC);
$role = $data[0]['role'];
$count = $STH->rowCount();

if ($count > 0) {
    session_start();
    $_SESSION['login'] = 'YES';
    if ($role == 'admin') {
        $_SESSION['role'] = 'admin';
    } else {
        $_SESSION['role'] = 'customer';
    }

    echo 'success';
} else {
    echo "Please check your username or password again.";
}

どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

1

あなたまたは他の誰かがまだ答えを探している場合に備えて:実際のページではなく、ajax を介して要求されたコンテンツをリダイレクトするため、php ヘッダー関数を使用してそれを行うことはできません。代わりに、login-process.php ファイルで、ログインできる場合は 1 を返し、javascript 関数を使用しlocation.reload();てページをリロードするかwindow.location.href="index.html"、リダイレクトするだけです。したがって、Javascript は次のようになります。

$("form#formAction").on("submit", function (e) {
    e.preventDefault();
    $.ajax({
        type: "POST",
        url: "login-process.php",
        data: $(this).serialize(),
        success: function (data) {
            if(data == 1) {
                // If logged-in, reload the page or do something else
                location.reload();
            } else {
                $("input#username").val("");
                $("input#password").val("");
                $("input#username").focus();
            }
        }
    });
});
于 2014-06-21T23:44:43.513 に答える
0

動作するheader('Location:....')はずです

if ($count > 0) {
    session_start();
    $_SESSION['login'] = 'YES';
    if ($role == 'admin') {
        $_SESSION['role'] = 'admin';
    } else {
        $_SESSION['role'] = 'customer';
    }

    header('Location: redirectpage.php');
} else {
    echo "Please check your username or password again.";
}
于 2013-09-14T08:32:06.240 に答える