>  기사  >  백엔드 개발  >  PHP는 [토큰 검증을 기반으로] 양식의 반복 제출을 방지하는 기능을 구현합니다.

PHP는 [토큰 검증을 기반으로] 양식의 반복 제출을 방지하는 기능을 구현합니다.

jacklove
jacklove원래의
2018-06-22 15:52:501421검색

이 글에서는 주로 PHP의 양식 반복 제출 방지 기능을 소개합니다. 양식의 반복 제출을 방지하기 위해 PHP의 관련 운영 기술을 분석합니다. 매우 간단하고 실용적입니다.

이 문서의 예제에서는 PHP에서 양식의 반복 제출을 방지하는 기능을 구현하는 방법을 설명합니다. 참고하실 수 있도록 다음과 같이 공유합니다.

폼의 반복 제출을 방지하는 방법은 다양하므로 오늘은 PHP에서 폼의 반복 제출을 효과적으로 방지하는 방법을 소개하겠습니다.

코드는 매우 간단합니다

작은 데모를 공유하는 것이 매우 현명하다고 믿습니다. 여기서 배울 수 있습니다.

특정 코드:


<?php
/*
* 2016年9月29日08:09:13
*/
session_start();
header("Content-Type: text/html;charset=utf-8");
function set_token() {
  $_SESSION[&#39;token&#39;] = md5(microtime(true));
}
function valid_token() {
  $return = $_REQUEST[&#39;token&#39;] === $_SESSION[&#39;token&#39;] ? true : false;
  set_token();
  return $return;
}
//如果token为空则生成一个token
if(!isset($_SESSION[&#39;token&#39;]) || $_SESSION[&#39;token&#39;]==&#39;&#39;) {
  set_token();
}
if(isset($_POST[&#39;web&#39;])){
  if(!valid_token()){
    echo "token error,请不要重复提交!";
  }else{
    echo &#39;成功提交,Value:&#39;.$_POST[&#39;web&#39;];
  }
}else{
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>PHP防止重复提交表单</title>
<meta name="keywords" content="PHP" />
<meta name="description" content="PHP防止重复提交表单" />
</head>
<body>
<p id="main">
  <p class="demo">
    <form method="post" action="">
      <input type="hidden" name="token" value="<?php echo $_SESSION[&#39;token&#39;]?>">
      <input type="text" class="input" name="web" value="脚本之家">
      <input type="submit" class="btn" value="提交" />
    </form>
  </p>
</p>
</body>
</html>
<?php }?>

관심 있는 분야:

tp 프레임워크(thinkPHP)는 세 번의 잘못된 로그인 비밀번호 후 계정을 잠그는 예를 구현합니다.

PHP는 데이터 사전 생성의 예를 구현합니다.

CodeIgniter의 기본 작업에 대한 설명 프레임워크 데이터베이스

위 내용은 PHP는 [토큰 검증을 기반으로] 양식의 반복 제출을 방지하는 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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