PHP 페이지에 대한 직접 접근을 방지하고, 인용만 하면 B 페이지에 직접 접근할 수 없습니다.
A에 COOKIE를 추가하고 B가 COOKIE를 결정한 후에 COOKIE를 삭제할 수도 있습니다.
모듈 새로 고침 방지
그래서 이런 상황이 발생하지 않도록 매개변수를 추가하는 것을 고려했습니다. COOKIE와 SESSION을 사용할 수 있지만 COOKIE는 클라이언트 측입니다. 누군가가 COOKIE를 비활성화하면 여전히 악의적으로 클릭 수를 새로 고칠 수 있습니다. SESSION을 사용하는 것이 더 좋습니다. IP URL 매개변수의 MD5 값을 SESSION 이름으로 사용하면 누구나 위조하기 어려울 것 같습니다.
구현 원칙: max_reloadtime =100 설정 //최대 페이지 새로 고침 간격 설정
사용자가 페이지를 처음 열면 현재 시간이 기록되어 session_start에 저장됩니다.
사용자가 두 번째로 페이지를 열 때(session_start가 존재하는지 확인하기 위해) session_start에서 현재 시간을 빼서 차이 time_passed를 얻습니다.
시간이 지나면
예제 2, PHP는 중복 제출을 방지합니다.
먼저, 세션 변수를 정의하여 양식의 제출 순서 번호를 저장할 수 있습니다.
이는 "$userLastAction"으로 정의됩니다.
그런 다음 숨겨진 변수를 양식에 추가하고 값을 $userLastAction 1로 설정합니다.
>
마지막으로 제출을 처리하기 전에 양식이 제출되었는지 확인합니다.
if($lastAction>$userLastAction and inputIsValid(…)){
$userLastAction; // 시퀀스 번호에 1 추가
/ / 양식 데이터 처리
}
코드 복사
제출 페이지:
$_SESSION['code']=mt_rand(1,1000);//1~1000 사이의 임의의 숫자 생성
?>
코드 복사
제출된 페이지:
if($_SESSION['code']!=$_REQUEST['scode']){
echo " 다시 제출하지 마세요.";
종료;
}
$_SESSION['code']=0
/* 개선된 버전
PHP는 사용자가 페이지를 새로 고치거나(새로 고침 또는 다시 로드) 양식 콘텐츠를 반복적으로 제출하는 것을 방지합니다.
양식 변수의 내용은 $_POST['name']에 의해 참조되므로 양식을 처리한 후 $_POST['name']을 직접 삭제할 수 있습니다(unset()). 설마. 페이지가 기본적으로 양식 콘텐츠를 캐시할 수 있으므로 $_POST['name']이 삭제되더라도 새로 고침 후에도 $_POST['name']에 값이 할당되며 여전히 유효합니다. 는 세션을 사용하여 해결할 수 있습니다. 먼저 세션에 400과 같은 값을 할당합니다. 첫 번째 제출이 성공한 후 세션 값을 변경합니다. 두 번째 제출 시 세션 값이 400이 아닌 경우 양식의 데이터를 확인합니다. 더 이상 처리되지 않습니다. 세션의 유효 시간을 설정할 수 있습니까?
*/
if (isset($_POST['action']) && $_POST['action'] == '제출됨') {