【问题标题】:Match indexes of two arrays in PHP to pair data匹配PHP中两个数组的索引以配对数据
【发布时间】:2020-12-01 23:08:47
【问题描述】:

我正在做一个包含多个文件上传的表单,每个文件输入都有一个标题输入,我想将标题与文件匹配,以便能够用标题重命名文件。

我不知道如何匹配两个数组的索引才能做到这一点。

有人可以帮我吗?谢谢

这是我目前的代码...

PHP:

$target_dir = 'files/';

if(isset($_POST['title']) && !empty($_POST['title'])){
    $total_titles = count($_POST['title']);
    for($key = 0; $key < $total_titles; $key++) {

        // Clean retrieved client data
        $pageName= $_POST['titles'];

    }

        // Check files 
        if(isset($_FILES['userfile']['name'])) {

            // Count the number of uploaded files
            $total_files = count($_FILES['userfile']['name']);

            // Loop on uploaded files
            for($key = 0; $key < $total_files; $key++) {

                // Check if file is selected
                if(isset($_FILES['userfile']['name'][$key]) && $_FILES['userfile']['size'][$key] > 0) {
        
                    $original_filename = $_FILES['userfile']['name'][$key]; 
                    
                    // Get the file extension
                    $extension = pathinfo($original_filename, PATHINFO_EXTENSION);  
                    
                    // Get filename without extension
                    $filename_without_extension = basename($original_filename, '.'.$extension);

                    // Generate new filename
                    $new_filename = str_replace(' ', '_', $filename_without_extension) . '_' . '.' . $extension; 
                    // Upload the file with new name
                move_uploaded_file($_FILES['userfile']['tmp_name'][$key], $target_dir . $new_filename);

            }
        } 
    }
}

HTML

<div class="container">
    <div class="row justify-content-center">
        <!-- Page names -->
        <form class="form col-xl-6" action="" id="page_list_section" method="post" enctype="multipart/form-data">
            <input type="text" name="title[]" placeholder="Title" >
            <input type="file" name="userfile[]" > 
            <input type="text" name="title[]" placeholder="Title" >
            <input type="file" name="userfile[]" > 
            <input type="submit" name="Submit" value="Upload" > 
         </form>
    </div>
</div>

【问题讨论】:

  • 你真的应该小心让用户上传文件!您提交的代码允许攻击者执行Unrestricted File Upload。例如,他们可以上传 .php 文件以在您的网站上执行他们的代码,并允许他们接管您的整个网站。上面链接的网站还显示了如何防止它。这是另一个直接链接:owasp.org/www-community/vulnerabilities/…
  • 请注意您复制了&lt;input type="text" name="title[]" placeholder="Title" &gt; 字符串。
  • thx,这是故意的,我需要测试多个文件上传
  • Thx,其实是一个原始代码来测试,我会在后面引入验证以防止漏洞。

标签: php arrays forms file upload


【解决方案1】:

这是比赛:

for($key = 0; $key < $total_files; $key++) {
   $title = $_POST['title'][$key];
   $filename = $_FILES['userfile']['name'][$key];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多