Detailed explanation of steps to prevent repeated form submission using PHP+Session

php中世界最好的语言
Release: 2023-03-26 08:16:01
Original
2507 people have browsed it

This time I will bring you a detailed explanation of the steps to prevent repeated submission of forms in PHP Session. What are the precautions for preventing repeated submission of forms in PHP Session? Here are practical cases. Let’s take a look. one time.

index.php

The current form page is_submit is set to 0

 SESSION_START(); 
$_SESSION['is_submit'] = 0;
<form id="reg" action="post.php" method="post"> 
  <p>用户名:<input type="text" class="input" name="username" id="user"></p> 
  <p>密   码:<input type="password" class="input" name="password" id="pass"></p> 
  <p>E-mail:<input type="text" class="input" name="email" id="email"></p> 
  <p><input type="submit" name="submit" class="btn" value="提交注册"/></p> 
</form>
Copy after login

post.php

If the form is submitted, set Currently 'is_submit is 1, if post.php is refreshed, the else code will be executed

SESSION_START(); 
if (isset($_POST[&#39;submit&#39;])) { 
  if ($_SESSION[&#39;is_submit&#39;] == &#39;0&#39;) { 
    $_SESSION[&#39;is_submit&#39;] = &#39;1&#39;; 
    echo "代码块,要做的事,代码...<a onclick=&#39;history.go(-1);&#39; href=&#39;javascript:void(0)&#39;>返回</a>"; 
  } else { 
    echo "请不用重复提交<a href=&#39;index.php&#39;>PHP+SESSION防止表单重复提交</a>"; 
  } 
}
Copy after login

php Introduction to the implementation method of solving repeated submission of forms

[Introduction] Repeated submission is a problem we often encounter in development. In addition to using js to prevent repeated submission of forms, we can also use php to prevent repeated submission.

Example 1 The code is as follows

Duplicate submission is a problem we often encounter in development. In addition to using js to prevent repeated submission of forms, we can also use php to prevent repeated submission. oh.

Example 1

The code is as follows

<?php
 /*
 * php中如何防止表单的重复提交
 */
session_start();
 if (empty($_SESSION[&#39;ip&#39;])) {//第一次写入操作,判断是否记录了IP地址,以此知道是否要写入数据库
  $_SESSION[&#39;ip&#39;] = $_SERVER[&#39;REMOTE_ADDR&#39;]; //第一次写入,为后面刷新或后退的判断做个铺垫
  //...........//写入数据库操作
} else {//已经有第一次写入后的操作,也就不再写入数据库
  echo &#39;请不要再次刷新和后退&#39;; //写一些已经写入的提示或其它东西
}
 ?>
Copy after login

Specific principle

session scope variable token to prevent.

1. Open session:

session_start();

2. If a form is submitted

The code is as follows Copy the code

if (isset($token))

Token is included in the form in hidden form.

The code is as follows Copy the code

<input type="hidden" name="token" value="<?php echo $token; ?>" />
Copy after login

3. If the form is submitted repeatedly

The code is as follows

if ($_SESSION["token"] != $token) { 
  // 不让重复提交,在此处理 
  // header("location:".$_SERVER[&#39;PHP_SELF&#39;]); 
 } else { 
  // 正常的表单提交,在此处理 
  // echo "已提交";  
}
Copy after login

4. Set the token value

The code is as follows

$token = mt_rand(0,1000000);
$_SESSION[&#39;token&#39;] = $token;
Copy after login

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!

Recommended reading:

Detailed explanation of the steps for cutting and merging large files in PHP

Detailed explanation of the steps for PHP mongoDB database operation

php Chinese website learning topicphp session (including pictures, videos, cases)

The above is the detailed content of Detailed explanation of steps to prevent repeated form submission using PHP+Session. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template