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(); //上传文件的后缀.