ホームページ  >  記事  >  バックエンド開発  >  PHPでページの更新を防ぐにはどうすればよいですか?

PHPでページの更新を防ぐにはどうすればよいですか?

青灯夜游
青灯夜游オリジナル
2020-07-21 15:26:352980ブラウズ

方法: ページにアクセスしたときにセッションがあるかどうかを確認します。セッションがない場合は、直接セッションを作成し、現在時刻に設定します。プログラムは通常どおり実行されます。セッションがある場合は、時差を確認します。セッション内の時刻と現在時刻の間の間隔が指定された時間より短い場合、プログラムの実行は中断されます。

PHPでページの更新を防ぐにはどうすればよいですか?

#php ページの更新を禁止するメソッド

方法 1:

ページの更新を防ぐための小さなコードはあまり役に立たないかもしれません。これは単なる参考のためのアイデアです。

原則:

ページにアクセスしたときにセッションがあるかどうかを判断します。セッションがない場合は、セッションを直接作成し、現在時刻に設定します。プログラムは通常どおり実行されます。

セッションがある場合は、セッション内の時刻と現在時刻との時間差を求めます。間隔が指定された時間 (この例では 5 分など) 未満の場合、プログラムの実行は中断され、エラーが発生します。メッセージが表示されます;

セッション内の時間が現在時刻より大きい場合は、セッション内の時間を更新すると、ページは正常に実行されます。

コードは次のとおりです:

session_start();   //启动session
$timeOutLimit = "300";  //设置时间间断五分钟
if (isset($_SESSION["timeout"])) {  //判断是否有session
    if (time() - $_SESSION["timeout"] <</span> $timeOutLimit) {    
    //如果有session 且session时间间隔小于5分钟 直接die()退出并输出提示信息。
       die("请不要多次刷新当前页面");
    } else {    //如果没有超时,将session时间重置为当前时间。
       $_SESSION["timeout"] = time();
    }
} else {
    $_SESSION["timeout"] = time();  
    //如果没有timeout的session,则创建session为当前时间,便于下次访问页面时判断
}
//其它页面代码.....

方法 2:

//代理IP直接退出
empty($_SERVER[&#39;HTTP_VIA&#39;]) or exit(&#39;Access Denied&#39;);
//防止快速刷新
session_start();
$seconds = &#39;3&#39;; //时间段[秒]
$refresh = &#39;5&#39;; //刷新次数
//设置监控变量
$cur_time = time();
if(isset($_SESSION[&#39;last_time&#39;])){
    $_SESSION[&#39;refresh_times&#39;] += 1;
}else{
    $_SESSION[&#39;refresh_times&#39;] = 1;
    $_SESSION[&#39;last_time&#39;]     = $cur_time;
}
//处理监控结果
if($cur_time - $_SESSION[&#39;last_time&#39;] < $seconds){
    if($_SESSION[&#39;refresh_times&#39;] >= $refresh){
        //跳转至攻击者服务器地址
        header(sprintf(&#39;Location:%s&#39;, &#39;http://127.0.0.1&#39;));
        exit(&#39;Access Denied&#39;);
    }
}else{
    $_SESSION[&#39;refresh_times&#39;] = 0;
    $_SESSION[&#39;last_time&#39;] = $cur_time;
}

推奨される関連チュートリアル: "

PHPチュートリアル

以上がPHPでページの更新を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。