>  기사  >  백엔드 개발  >  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 Tutorial

"

위 내용은 PHP에서 페이지 새로 고침을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.