zoukankan      html  css  js  c++  java
  • PHP 防止表单重复提交

    原理是:首先在表单页生成一个 随机不重复的 token(可以利用时间戳),把 token 的值分别存入 session 和 表单的隐藏域;当提交表单的时候,在接收页对比传递过来的 token 和session 中的 token ,当两者相等时,重新生成一个 token 并存入 session。此时如果重复提交表单,则必然session 中新的 token 值不等于 post 来的 token。

    代码:

    表单页 post.php

     1 session_start();  
     2 
     3 $token = md5(microtime(true));
     4 $_SESSION['token'] = $token;
     5 
     6 ?>  
     7 <form method='post' action='post2.php'>  
     8     <input type="text" name="token" value="<?php echo $token;?>">  
     9     <input type="text" name="test" value="value<?php echo mt_rand(1,9999);?>">  
    10     <input type="submit">  
    11 </form>

    接收页 post2.php

     1 <?php
     2 session_start();
     3 if(isset($_SESSION['token'])){
     4     $token = $_SESSION['token'];
     5 }else{
     6     $token = '';
     7 }
     8 if(isset($_POST['test'])){  
     9     if($_POST['token'] != $token){  
    10         echo '重复提交 <br />';  
    11     }else{  
    12         echo 'success';  
    13         $token = md5(microtime(true));
    14         $_SESSION['token'] = $token;
    15     }  
    16 }
  • 相关阅读:
    10.7
    10.5
    周六
    周五
    周四
    周三
    四则运算
    zabbix——yum安装
    Stirling's Formula
    CONTRASTIVE REPRESENTATION DISTILLATION
  • 原文地址:https://www.cnblogs.com/dee0912/p/4306168.html
Copyright © 2011-2022 走看看