Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP에서 양식을 제출할 때 다중 삽입을 방지하는 방법은 무엇입니까?

<시간/>

PHP 세션을 사용하여 양식을 제출할 때 다중 삽입을 방지할 수 있습니다. PHP 세션은 POST의 현재 타임스탬프를 설정하는 세션 변수(예:$_SESSION['posttimer'])를 설정합니다. PHP에서 양식을 처리하기 전에 $_SESSION['posttimer'] 변수가 있는지 확인하고 특정 타임스탬프 차이(예:2초 또는 3초)를 확인합니다. 이렇게 하면 실제로 중복된 삽입을 식별하고 제거할 수 있습니다.

간단한 형태 -

// form.html
<form action="my_session_file.php" method="post">
   <input type="text" name="bar" />
   <input type="submit" value="Save">
</form>

위의 'my_session_file.php'에 대한 참조는 다음 코드 줄을 갖습니다 -

예시

if (isset($_POST) && !empty($_POST)) {
   if (isset($_SESSION['posttimer'])) {
      if ( (time() - $_SESSION['posttimer']) <= 2) {
         // less then 2 seconds since last post
      } else {
         // more than 2 seconds since last post
      }
   }
   $_SESSION['posttimer'] = time();
}

출력

이것은 다음과 같은 출력을 생성합니다 -

The unique form submitted data.

posttimer 세션 변수가 설정되어 있으며 마지막 POST 작업 이전에 2초 이하의 시간 차이가 있는 경우 제거할 수 있습니다. 그렇지 않으면 저장됩니다. time 함수가 호출되고 값이 posttimer 세션 변수에 할당됩니다.