避免表单重复提交 (加一个口令验证码 类似验证码)

来源:互联网 发布:中央网络空间安全学院 编辑:程序博客网 时间:2024/05/22 05:31



1、在静态提交的页面里, 写一个每次刷新产生一个随机数, 存入session  (if(!isset($_session['code'])))。 并放到form表单中,一起提交。


2、在后台提交处理时,判断之前的session里的值是否和提交过的的 input表单的code一样,不一样,则为静态页面又进行了第二次刷新产生了新code。所以和session中不一样。


3、为了不影响下次提交、上传文件使用,  在 判断一样和不一样的同时,将session = null ,保证下一次一样。 可以正常提交。


view

<?php    $fileSubmit = mt_rand(0,1000000);    if(!isset($_SESSION['filesubmit'])){        $_SESSION['filesubmit'] = $fileSubmit;    }?><!DOCTYPE html><html lang="zh-CN"><head>    <meta charset="utf-8">    <title>数据查询</title>    <!--[if lt IE 9]>    <script src="{{asset('public/js/html5shiv.js')}}"></script>    <![endif]--></head><body style=" overflow-x:scroll; min-width:1600px;" ><form method="POST" action="" enctype="multipart/form-data" class="act">    <input type="hidden" name="fileSubmitCode" value="{{$fileSubmit}}">  <span style="font-family:Helvetica, Tahoma, Arial, sans-serif;">//一同提交到后台 </span>    <input type="hidden" name="status" value="{{$status}}">  //设置一个值 ,<span style="font-family:Helvetica, Tahoma, Arial, sans-serif;">可观察是否重新刷新过,(后台给的值, 一样,不一样</span>

Controller


$status = '11';//page翻页$view_page = false;$view_table = false;if($input = Input::all()){//dd($input);if(isset($input['page'])){$view_page = true;}if(isset($input['tableid'])){$tableId = $input['tableid'];$view_table = true;}//dd($tableId);}//die();$file = Input::file('myfile');if(isset($input['fileSubmitCode'])){//dump($input['fileSubmitCode']);//dump($_SESSION['filesubmit']);if($input['fileSubmitCode'] != $_SESSION['filesubmit']){//echo "不相等";$_SESSION['filesubmit'] = null;$status = '0';$file = null;  //不相等【即刷新过】 就给<span style="font-family:Helvetica, Tahoma, Arial, sans-serif;">于file为空,认为不是上传,转到别的业务逻辑</span>}else{//echo "相等";$_SESSION['filesubmit'] = null;$status = '1';}}//dd($file);if($file){//dump($file);//$realPath = $file//$path = $file -> move(app_path().'/storage/uploads');$fileSize = round($file->getSize()/1024/1024,2);$realPath = $file->getRealPath();$original_name = $file->getClientOriginalName();$entension =  $file -> getClientOriginalExtension(); //上传文件的后缀.



0 0
原创粉丝点击