在 php 中将函数添加到数组中


Adding functions into an Array in php

就目前而言,我很难弄清楚如何通过单击图像或文本将函数删除、移动/复制、重命名为数组,然后使函数对应于表中的正确行和数组中行上的正确文件。

老实说,这是一个很难说出的问题,但该数组当前使用文件夹中的文件、文件名、大小和修改日期填充一个表,我正在尝试在每一行添加小图像以删除文件、重命名文件等。 以便这些图像与功能链接,因此按下时将删除相应的文件或重命名它(如果有意义(。 无论如何,数组代码如下, 我明白如果很难回答只是想我会问。

另外$cellOptions的是,im试图填充它的单元格目前只是让我返回登录用户

http://pastebin.com/dkeUAk50

function listFiles($dir)
{
  $output = '';  $outRows = '';  $files = array();
  if (is_dir($dir)) {
    if ($dirHandle = opendir($dir)) {
      $files = array_diff(scandir($dir), array('.', '..', '.htaccess'));
      $totalSize = (int) 0;
      foreach($files as $file) {
        $fileTime = @date("d-M-Y", filectime($dir . '/' . $file)) . ' ' . @date("h:i", filemtime($dir . '/' . $file));
        $totalSize += filesize($dir . '/' . $file);
        $fileSize = @byte_convert(filesize($dir . '/' . $file));
        $cellLink = '<td class="list_files_table_file_link"><a href="'. $dir ."/". $file . '">' . $file . '</a></td>';
        $cellTime = '<td>' . $fileTime . '</td>';
        $cellOptions = '<td>'. $_SESSION['Username'] .'<td>';
        $cellSize = '<td>' . $fileSize . '</td>';
        $outRows .= '<tr>' . "'n  " . $cellLink . "'n  " . $cellTime . "'n  " . $cellSize . "'n" . $cellOptions . '</tr>' . "'n";
      }
      closedir($dirHandle);
    }
  }
  $output = '<table class="list_files_table" width="100%" align="center" cellpadding="3" cellspacing="1" border="0">' . "'n";
  $output .= '<thead><tr><td><b>Name</b></td><td><b>Date Modified</b></td><td><b>Size</b></td></tr></thead>' . "'n";
  $output .= '<tfoot><tr><td colspan="2">' . count($files) . ' files.</td><td>' . @byte_convert($totalSize) . '</td></tr></tfoot>' . "'n";
  $output .= '<tbody>' . "'n";
  $output .= $outRows;
  $output .= '</body>' . "'n";
  $output .= '</table>';
  return $output;
}
function byte_convert($bytes)
{
  $symbol = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
  $exp = (int) 0;
  $converted_value = (int) 0;
  if ($bytes > 0) {
    $exp = floor(log($bytes)/log(1024));
    $converted_value = ($bytes/pow(1024,floor($exp)));
  }
  return sprintf('%.2f ' . $symbol[$exp], $converted_value);
}
session_start();
echo listFiles($_SESSION['UserFolder']);    

在循环中添加包含以下内容的元素:

  1. 使用 POST 方法提交到同一页面的表单
  2. 包含文件名的隐藏输入元素
  3. 用于提交表单的提交按钮。

这是它的样子:

$cellSize = '<td>' . $fileSize . '</td>';
$deleteCell = '<td><form action="/" method="POST"><input type="hidden" value="'.$file.'" ame="fileToDelete"/><input type="submit" value="Delete" name="deleteButton"/></form></td>';

创建一个要删除的函数:

function deleteFile($dir, $fileToDelete){
    if (is_dir($dir)) {
        if ($dirHandle = opendir($dir)) {
           $files = array_diff(scandir($dir), array('.', '..', '.htaccess'));
           if($files){
               foreach($files as $file){
                   if($file === $fileToDelete) {
                      unlink($fileToDelete);
                      $output = 'Successfully deleted file: '.$fileToDelete;
                   }
               }
           }
        }
    }
    return $output;
}

检查表单是否已提交,如果是,请删除有问题的文件:

if(isset($_POST)){
    echo deleteFile($_SESSION['UserFolder'], $_POST['fileToDelete']);
}