0

開発中のサイトへのログインにこのスクリプトを使用しています: http://www.php-login.net/

次のように、単純なログインを使用しています。

 require_once("config/db.php");

 // load the login class
 require_once("classes/Login.php");

 // create a login object.
 $login = new Login();

// ... ask if we are logged in here:
if ($login->isUserLoggedIn() == true) {    



$userid = $_SESSION['user_id'];



$time = Users::getData($userid);

include("views/logged_in.php");    
} else {
// the user is not logged in...
include("views/not_logged_in.php");
}

このスクリプトはログイン ID をセッションに保存し、関数 getData でパラメーターとして使用します。これは問題なく動作します。問題は、a) ページを更新するときです。b) ブラウザの [進む]/[戻る] ボタンを使用して移動します。

「フォームの再送信を確認してください...」というメッセージが表示され続けますが、これはもちろんあまりユーザーフレンドリーではありません。

どうすればこれを回避できますか?

4

1 に答える 1

1

headerフォームを投稿した後、サイトを使用してリダイレクトする必要があります。

これは、ユーザーがログインし、ログインした直後にクリックしてログアウトした場合に発生します。次に、ブラウザの戻るボタンを押すと、ログの $_POST データを含む送信フォームがあり、ブラウザはそのフォームを再度送信するかどうかを尋ねます。

この解決策を使用して、フォームの再送信を回避します (戻るボタンがクリックされたとき、または F5 (更新) が押されたとき):

ログインデータを含むフォームを処理するときは、同じページまたはホームページ (あなた次第) にリダイレクトしてください。使用する

header("HTTP/1.1 302 Found");
header('Location: '.$url_to_redirect);

その後、[戻る] ボタンをクリックするか、ページを更新すると、ログイン データが再度送信されないため、再度ログインが処理されません。

于 2013-11-08T09:16:49.633 に答える