2

問題がある。人々が私のサイトの1ページを更新できるようにしたくありません。どうすればいいですか?

4

3 に答える 3

8

更新はブラウザ側のソリューションです。サーバー側から制限することはできません。

実際にできることは、PHPのSESSIONを使用して、ユーザーが任意のページに2回アクセスするのを実際に防ぐことです。

<?php

session_start();

if(!isset($_SESSION['disablethispage'])){
    $_SESSION['disablethispage'] = true;
    // serving the page first time

}else{
    // visited before or page was refreshed

}

ただし、ユーザーがWebサイトのセッションCookieを削除した場合でも、ユーザーは同じページに戻ることができます。

二重投稿について話している場合は、POST-REDIRECT-GETソリューションを検討することをお勧めします。参照: http: //en.wikipedia.org/wiki/Post/Redirect/Get

于 2009-12-27T12:58:35.657 に答える
2

次のように、最後にそのページにアクセスした時間を保存してみてください。

<?php
session_start();
if(isset($_SESSION['last_visit']) && time() - $_SESSION['last_visit'] < 10) {
    die('Wait ten seconds before you reload this page');
}else{
    $_SESSION['last_visit'] = time();
}
?>

これにより、ページの読み込みが10秒に1回に制限されます。

この方法は、ユーザーがCookieを空にしないことに依存しているため、より厳密なソリューションが必要な場合は、IPアドレスを確認してデータベースに保存する必要がありますが、サーバーリソースがさらに必要になります。

于 2009-12-27T13:01:46.397 に答える
0

できません。人々にページを更新させたくない理由を説明すれば、より良い解決策を説明できるかもしれません。

編集:

投稿フォームの更新を制限するための優れた解決策は、フォームを送信するときにブラウザをリダイレクトすることです。それはこのように動作します:

  • フォームはpageA.phpにあり、pageB.phpに送信されます
  • pageB.phpはheader( "Location:pageC.php");を実行します フォームデータを処理した後(302リダイレクト)
  • pageC.phpには、ユーザーが実行したアクションの結果が表示されます。

その結果、ユーザーがpageC.phpを更新しても、フォームは再度送信されません。ユーザーが戻るボタンを押してからもう一度進むと、ブラウザーはpageC.phpをリロードするため、フォームも送信されません。

于 2009-12-27T12:59:02.020 に答える