PHP将所选文件从A文件夹移动到B文件夹
这是一个棘手的问题,我不知道从哪里开始,所以任何帮助都将不胜感激 我有一个名为“source”(c:/dev/source)的父文件夹,其中包含几个子文件夹 我需要一个PHP脚本,它将显示子文件夹,每个子文件夹旁边都有复选框,以及一个新文件夹名称的文本字段,允许用户勾选要复制到“c的目的地:/dev/destination/the_folder_name_”的复选框 单击“提交”时,所选子文件夹将从c:/dev/source复制到c:/dev/destination/the_folder_name_中PHP将所选文件从A文件夹移动到B文件夹,php,copy,directory,Php,Copy,Directory,这是一个棘手的问题,我不知道从哪里开始,所以任何帮助都将不胜感激 我有一个名为“source”(c:/dev/source)的父文件夹,其中包含几个子文件夹 我需要一个PHP脚本,它将显示子文件夹,每个子文件夹旁边都有复选框,以及一个新文件夹名称的文本字段,允许用户勾选要复制到“c的目的地:/dev/destination/the_folder_name_”的复选框 单击“提交”时,所选子文件夹将从c:/dev/source复制到c:/dev/destination/the_folder_nam
这一切都在本地内部开发服务器上运行。子文件夹将始终位于c:/dev/source/下面是一段不太为人所知的代码,名为DirectoryIterator。PHP站点上没有完整的文档记录,但以下是它的jist: 创建一个文件和文件夹列表,旁边有复选框,将它们全部放入一个数组中
$Directory = new RecursiveDirectoryIterator('c:/dev/source');
$Iterator = new RecursiveIteratorIterator($Directory);
?><form method="post"><?
foreach($Iterator as $r){
if($r->isDot()) continue;
echo "<input type=\"checkbox\" name=\"copy[]\" value=\"".($r->getSubPathName())."\"> ".$r->getSubPathName() . " <br>";
}
?></form><?
$Directory=new recursivedirectoryinterator('c:/dev/source');
$Iterator=新的递归迭代器($Directory);
这里有一段不太为人所知的代码,叫做DirectoryIterator。PHP站点上没有完整的文档记录,但以下是它的jist:
创建一个文件和文件夹列表,旁边有复选框,将它们全部放入一个数组中
$Directory = new RecursiveDirectoryIterator('c:/dev/source');
$Iterator = new RecursiveIteratorIterator($Directory);
?><form method="post"><?
foreach($Iterator as $r){
if($r->isDot()) continue;
echo "<input type=\"checkbox\" name=\"copy[]\" value=\"".($r->getSubPathName())."\"> ".$r->getSubPathName() . " <br>";
}
?></form><?
$Directory=new recursivedirectoryinterator('c:/dev/source');
$Iterator=新的递归迭代器($Directory);
?>一些建议:
对目标文件夹中允许的字符使用白名单。仅在符合以下条件时提交操作:
^[a-z0-9_-]+$
您可以对目录名使用数组索引。通过这种方式,您可以使用foreach($\u POST[“dirs”]){…}
<input type="checkbox" name="dirs[directory_name]"/>
<input type="checkbox" name="dirs[other_dir_name]"/>
<input type="checkbox" name="dirs[third_directory_name]"/>
始终对照白名单检查目录名,如上文所述。(如果允许使用
或/
等字符或许多其他字符,则可能存在安全风险)。一些建议:
对目标文件夹中允许的字符使用白名单。仅在符合以下条件时提交操作:
^[a-z0-9_-]+$
您可以对目录名使用数组索引。通过这种方式,您可以使用foreach($\u POST[“dirs”]){…}
<input type="checkbox" name="dirs[directory_name]"/>
<input type="checkbox" name="dirs[other_dir_name]"/>
<input type="checkbox" name="dirs[third_directory_name]"/>
始终对照白名单检查目录名,如上文所述。(如果允许使用
或/
等字符或其他许多字符,则可能存在安全风险)。从函数开始。从函数开始。谢谢。但它抛出了一个错误:致命错误:调用未定义的方法SplFileInfo::isDot(),您运行的PHP版本是@PHPnoob?谢谢Jason。但它抛出了一个错误:致命错误:调用未定义的方法SplFileInfo::isDot(),您运行的PHP版本是@PHPnoob?