星火源码 2021-03-12 22:03 采纳率: 100%
浏览 32
已采纳

想请教下 我写的这个php表单提交 对于防止频繁提交 具体怎么做

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>上传文件</title>
    <link rel="icon" href="./images/logo.png">
    <link rel="stylesheet" href="./css/style.css">
</head>
<body>
    <form action="./loadFile.php" class="boxmain" method="post" enctype="multipart/form-data">
    <table class="bigbox">
        <tr>
            <td>选择上传类型:<select name="fileType" id="fileType" class="mainInput" required>
    <option value="photo">图片</option>
    <option value="zip">压缩文件</option>
    <option value="rar">macbook-压缩文件</option>
    <option value="video">视频</option>
    <option value="doc">Word</option>
    <option value="xls">Excel</option>
    <option value="ppt">PPT</option>
    </select></td>
        </tr>
        <tr>
            <td>更改文件名:<input type="text" class="mainInput"   name="filename" id="filename" placeholder="例如:计科1901赖新宇" required parent="(\w{2})|^(\d{4})|(\w{3})"></td>
        </tr>
        <tr>
            <td><input type="file" class="file"  name="file"  id="file" required multiple></td>
        </tr>
        <tr>
            <td>密钥:<input type="text" class="mainInput" placeholder="请输入密钥" name="request" required><br>
            <span style="font-size: 12px;font-weight:300">注:必须输入秘钥才能上传文件</span>
        </td>
        </tr>
        <tr>
            <td><input type="submit" value="提交文件" class="btn"></td>
        </tr>
    </table> 
    </form>
</body>
</html>
  • 
    <?php
         header("Content-type:text/html;charset=utf-8");
        //  end
            $reques = $_POST['request'];
            if($reques==1365870192){
                $type  = $_POST['fileType'];
            $file=$_FILES['file']['tmp_name'];
            $filename=$_FILES['file']['name'];
            $fileRname = $_POST['filename'];
            // 重置文件名 根据对应的文件添加扩展名
            if($type=='photo'){
                $filename = $fileRname.'.png';
            }elseif($type=='video'){
                $filename = $fileRname.'.mp4';
            }elseif($type=='doc'){
                $filename = $fileRname.'.doc';
            }elseif($type=='xls'){
                $filename = $fileRname.'.xls';
            }elseif($type=='ppt'){
                $filename = $fileRname.'.ppt';
            }elseif($type=='zip'){
                $filename = $fileRname.'.zip';
            }elseif($type=='rar'){
                $filename = $fileRname.'.rar';
            }
            }else{
                echo '秘钥错误';
            }
            
            
            // 设置文件存储位置
            $path="source/";
            $res=move_uploaded_file($file,$path.$filename);
            if($res){
                echo '上传成功!';
            }else{
                echo '上传失败!';
            };
        
        ?>
  • 写回答

1条回答 默认 最新

  • 多鱼的夏天 2021-03-16 23:04
    关注

    方法有下面几种:

    1、 前端,用户点击提交后,用脚本让提交按钮不可用,这样用户就没办法点击再次提交

    2、后端增加重复判断,用文件+文件名的md5值作为判断是否重复的标志

    3、 后端用session判断,用户提交后在session中放置标志,再次提交若标志存在则判断为重复提交。若有多个web服务器,可以用redis存储标志

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 PHP+javascript文本框之间字符串逻辑判断
  • ¥15 爬取招聘网站数据信息
  • ¥15 安装完tensorflow,import tensorflow as tf后报错,如何解决?
  • ¥15 ultralytics库导出onnx模型,模型失去预测能力
  • ¥15 linux下点对点协议连接2个USB串口的硬件流量控制问题
  • ¥15 SQL数据自动生成问题
  • ¥15 设密码后无法访问他人的共享文件
  • ¥15 浏览器打不开学校网页
  • ¥100 android开发打不开相册,不弹出授权信息,请问怎么解决?
  • ¥15 我想通过python处理sybase IQ库的一些数据,但是不知道sybase IQ库怎么连接,之前连接都是用linux上的 dbisql