Php 如何在此脚本中添加删除功能以删除服务器上的文件

Php 如何在此脚本中添加删除功能以删除服务器上的文件,php,wordpress,file,unlink,Php,Wordpress,File,Unlink,我有一个脚本,它将特定目录文件夹中的所有文件加载到一个可查看的表中。我还能够成功地集成date Upload元素,并使用$iterator函数,如下面的代码所示 更新 将值编辑为复选框输入,但仍不起作用 从过去的尝试中删除了不必要的代码段 将代码更新为最新版本,并添加了完整脚本,以便更好地理解CD001的建议 // Begin Adding Uploader Page Content function pdfupload_admin_page(){ ?> <style>

我有一个脚本,它将特定目录文件夹中的所有文件加载到一个可查看的表中。我还能够成功地集成date Upload元素,并使用$iterator函数,如下面的代码所示

更新

  • 将值编辑为复选框输入,但仍不起作用
  • 从过去的尝试中删除了不必要的代码段
  • 将代码更新为最新版本,并添加了完整脚本,以便更好地理解CD001的建议

    // Begin Adding Uploader Page Content
    function pdfupload_admin_page(){
    ?>
        <style>
            <?php include '../wp-content/plugins/PDF-Uploader/support-files/stylesheet.css'; ?>
        </style>
        <div class="wrap">
    
        <div id="contact">
    
    
    
            <div style="text-align:center;">
    
    
            <h1>Secure PDF File Upload</h1>
            <p>Adding a watermark to your PDF files is as easy as uploading the file using the form below.<br>
            Upon successful submission of your PDF file you will receive the uploaded PDF files URL which you can then use when linking to the PDF within any page or post you desire.</p>
            <p>The PDF file when linked to using the URL provided will automatically acquire a watermark when loaded within the browser of the specific logged in user as well as the current date and time.</p>
            <form action="" method="post" enctype="multipart/form-data">
        <h3>Select PDF File To Upload:</h3><br>
        <input type="file" name="fileToUpload" id="fileToUpload">
        <input type="submit" value="Upload PDF File" name="submitUpload">
    </form>
    
    <?php
    
        $target_dir = "../wp-content/plugins/PDF-Uploader/";
        $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
        $uploadOk = 1;
        $FileType = pathinfo($target_file,PATHINFO_EXTENSION);
    
        if(isset($_POST["submitUpload"])) {
            if (file_exists($target_file)) {
            echo "Sorry, file already exists.";
            $uploadOk = 0;
        }
        // Check file size
       // if ($_FILES["fileToUpload"]["size"] > 10000000) {
        //    echo "Sorry, your file is too large.";
       //     $uploadOk = 0;
       // }
        // Allow certain file formats
        if($FileType != "pdf") {
            echo "Sorry, only PDF files are allowed.";
            $uploadOk = 0;
        }
        // Check if $uploadOk is set to 0 by an error
        if ($uploadOk == 0) {
            echo "Sorry, your file was not uploaded.";
        // if everything is ok, try to upload file
        } else {
            if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
                echo "File uploaded successfully use the following URL when linking to your PDF <br> https://website.com/wp-content/plugins/PDF-Uploader/watermarked.php?filename=" . basename( $_FILES["fileToUpload"]["name"]). "";
            } else {
                echo "Sorry, there was an error uploading your file.";
            }
        }
        }
        // Check if file already exists
    
        /**
         * FILE DELETION HANDLER  
         */
       $iterator = new FilesystemIterator('../wp-content/plugins/PDF-Uploader/');
    
        function delete_file($iterator, $file) {
            if(!unlink($iterator->getPath() . '/' . $file)) {
                echo "Sorry! your file cannot be deleted. Please try again later";
            }
            else {
                echo "File deleted successfully!";
            }
        }
        if(isset($_POST['submit'])){
            if(!empty($_POST['file'])) { // check if the checkbox was checked.
                foreach($_POST['file'] as $file) {
                    // call delete function here.
                    delete_file($iterator, $file);
                }
            }
            else{
                echo "No file selected. You must select at least one PDF file to be deleted.";
            }
        }
    
    
    ?>
    
    
        </div>
    <?php
     // if ($handle = opendir('../wp-content/plugins/PDF-Uploader/')) {
     //     while (false !== ($file = readdir($handle)))
     //    {
     //        if ($file != "." && $file != ".." && strtolower(substr($file, strrpos($file, '.') + 1)) == 'pdf')
     //       {
      //          $thelist .= '<td><input type="checkbox" name="file[]" value="https://website.com/wp-content/plugins/PDF-Uploader/'.$file.'"></td>';
      //      }
      //  }
    //    closedir($handle);
    //}
    ?>
    <form id="deletionForm" method="post" action="">
    <table>
    <thead>
            <tr style="width:100%;">
                <th style="width:25px;"></th>
                <th style="text-align:left;width:625px;">Filename</th>
                <th style="text-align:right;width:100px;padding-right:20px;">Date Uploaded</th>
            </tr>
        </thead>
    <?php
        // $iterator = new FilesystemIterator('../wp-content/plugins/PDF-Uploader/pdf-watermarker/');
        foreach($iterator as $file){
            //if($file->isFile()){
            if ($file != "." && $file != ".." && strtolower(substr($file, strrpos($file, '.') + 1)) == 'pdf')
            {
                $cTime = new DateTime();
                $cTime->setTimestamp($file->getCTime());
                //echo $file->getFileName() . " file Created " . $cTime->format('Y-m-d h:i:s') .  "<br/>\n";
    ?>
            <tr>
                <td style="width:25px;"><input type="checkbox" name="file[]" value="wp-content/plugins/PDF-Uploader/<?php echo $file->getFileName(); ?>"></td>
                <td style="text-align:left;width:625px;"><a href="https://website.com/wp-content/plugins/PDF-Uploader/<?php echo $file->getFileName(); ?>" target="_blank"><?php echo $file->getFileName(); ?></a></td>
                <td style="text-align:right;width:100px;padding-right:20px;"><?php echo $cTime->format('Y-m-d h:i:s'); ?></td>
            </tr>
    
    <?php
    }
        }
        ?>
    </table>
    <input type="submit" name="submit" value="Delete Selection">
    </form>
        </div>
    
        <?php
    }
    // End Adding Secure PDF Upload Page Content
    
    //开始添加上传页面内容
    函数pdfupload_admin_page(){
    ?>
    安全的PDF文件上载
    向PDF文件添加水印与使用下表上载文件一样简单。
    成功提交PDF文件后,您将收到上载的PDF文件URL,您可以在任何页面或帖子中链接到PDF时使用该URL

    使用提供的URL链接到的PDF文件在加载到特定登录用户的浏览器中时会自动获取水印以及当前日期和时间

    选择要上载的PDF文件:
    文件名 上载日期 解决方案(解释如下)

    与:

    有点整洁

    拥有一个web服务器可读写的目录也存在安全问题——如果应用程序中存在漏洞,未经授权的用户可以上传和执行任何内容(在浏览器中打开);例如恶意PHP脚本

    您可以通过Apache配置来缓解这种情况-一个常见的做法是通过
    .htaccess
    文件禁用PHP:

    php_flag engine off
    
    解决方案(解释如下)

    与:

    有点整洁

    拥有一个web服务器可读写的目录也存在安全问题——如果应用程序中存在漏洞,未经授权的用户可以上传和执行任何内容(在浏览器中打开);例如恶意PHP脚本

    您可以通过Apache配置来缓解这种情况-一个常见的做法是通过
    .htaccess
    文件禁用PHP:

    php_flag engine off
    

    文件处理需要在
    中使用有效的enctype,即手册中规定的
    enctype=“multipart/form data”

    <!-- The data encoding type, enctype, MUST be specified as below -->
    <form enctype="multipart/form-data" action="__URL__" method="POST">
        <!-- MAX_FILE_SIZE must precede the file input field -->
        <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
        <!-- Name of input element determines name in $_FILES array -->
        Send this file: <input name="userfile" type="file" />
        <input type="submit" value="Send File" />
    </form>
    
    手册中的一个示例:

    <!-- The data encoding type, enctype, MUST be specified as below -->
    <form enctype="multipart/form-data" action="__URL__" method="POST">
        <!-- MAX_FILE_SIZE must precede the file input field -->
        <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
        <!-- Name of input element determines name in $_FILES array -->
        Send this file: <input name="userfile" type="file" />
        <input type="submit" value="Send File" />
    </form>
    
    "; ?>
    使用PHP的错误报告帮助您调试:

    但是,在处理复选框时,不要使用
    empty()
    ,而要使用
    isset()

    是否要上载文件有点不清楚。如果是,则需要更改
    文件处理要求在
    中使用有效的enctype,即
    enctype=“多部分/表单数据”
    ,如手册所示:

    <!-- The data encoding type, enctype, MUST be specified as below -->
    <form enctype="multipart/form-data" action="__URL__" method="POST">
        <!-- MAX_FILE_SIZE must precede the file input field -->
        <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
        <!-- Name of input element determines name in $_FILES array -->
        Send this file: <input name="userfile" type="file" />
        <input type="submit" value="Send File" />
    </form>
    
    手册中的一个示例:

    <!-- The data encoding type, enctype, MUST be specified as below -->
    <form enctype="multipart/form-data" action="__URL__" method="POST">
        <!-- MAX_FILE_SIZE must precede the file input field -->
        <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
        <!-- Name of input element determines name in $_FILES array -->
        Send this file: <input name="userfile" type="file" />
        <input type="submit" value="Send File" />
    </form>
    
    "; ?> 使用PHP的错误报告帮助您调试:

    但是,在处理复选框时,不要使用
    empty()
    ,而要使用
    isset()

    是否要上载文件有点不清楚。如果是,则需要更改
    
    
    您的日期在一个
    中,如果您想以“总之,我需要弄清楚如何将delete函数添加到第一个代码段…”的形式发送,请将其输入…复制/粘贴?我感觉我不太理解问题的意思…对代码进行了编辑,最后我将文件连接到了复选框,当您单击复选框并提交时,我试图让它删除该文件,因此不确定是否需要输入日期,但可能是更好的排序选项我猜的顺序。谢谢你的点播。表单中的日期不是很相关,我不认为-你正在使用
    $file->getCTime()从文件本身读取创建时间
    hi CD001 delete函数与我的旧代码一起工作,但与新代码不一起工作,我正在试图找出原因。我希望澄清您的日期在
    中,如果您希望它以以下形式发送,请将其输入“因此,简而言之,我需要找出如何将delete函数添加到第一个代码段…”…复制/粘贴?我感觉我不太理解问题的意思…对代码进行了编辑,最后我将文件连接到了复选框,当您单击复选框并提交时,我试图让它删除该文件,因此不确定是否需要输入日期,但可能是更好的排序选项我猜的顺序。谢谢你的点播。表单中的日期不是很相关,我不认为-你正在使用
    $file->getCTime()从文件本身读取创建时间
    hi CD001“删除”功能可以使用我的旧代码,但不能使用新代码,我正在试图找出原因。我希望你能澄清一下,你应该看到我在OP上发表的评论;你错过了一些东西,他们也错过了。我会检查一下,谢谢你的提示Funk,你有我可以查看的资源链接吗?@DigitalDesigner TryCD001的回答再次出现;他进行了编辑。我将CD001帖子中提到的元素以及初始问题添加到了我的页面中,但仍然没有删除,日志中没有错误,只是页面上的验证错误消息说它不能删除。我是否实现了错误?@DigitalDesigner-看起来你仍然在发送f的完整文件路径要删除的文件名,而不仅仅是文件名,例如,
    wp content/plugins/PDF Uploader/
    -我在图像列表的
    输出中做了一些更改…你应该看到我在OP上发布的评论;你错过了一些东西,他们也错过了。我会检查一下,谢谢你的提示,是吗
    if(isset($_POST['file'])) { // check if the checkbox was checked.
    
    <?php 
    
        if ($handle = opendir('../wp-content/plugins/PDF-Uploader/.')) {
    
        $thelist = "";
            while (false !== ($file = readdir($handle)))
            {
                if ($file != "." && $file != ".." && strtolower(substr($file, strrpos($file, '.') + 1)) == 'pdf')
                {
                    $thelist .= '<td><input type="checkbox" name="file[]" value="../wp-content/plugins/PDF-Uploader/'.$file.'"></td>';
                }
            }
            closedir($handle);
        }
    ?>