星火源码 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存储标志

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

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题