Php 多次将同一文件复制到其他文件夹
单击“提交”按钮时,我正在使用此脚本将文件复制到其他文件夹Php 多次将同一文件复制到其他文件夹,php,Php,单击“提交”按钮时,我正在使用此脚本将文件复制到其他文件夹 <?php if (isset($_POST['upload']) && isset($_POST['datae'])) { copy('../print/'.$_POST['datae'], '../Upload/'.$_POST['datae']); echo "<meta http-equiv='refresh' content='1'>"; } ?> 也许我可以从这里得到帮助。您应该在点
<?php
if (isset($_POST['upload']) && isset($_POST['datae'])) {
copy('../print/'.$_POST['datae'], '../Upload/'.$_POST['datae']);
echo "<meta http-equiv='refresh' content='1'>";
}
?>
也许我可以从这里得到帮助。您应该在点上拆分文件名以分别获得扩展名,然后可以使用while循环更改targetname,直到找不到targetname的文件为止 其次,不要这样做:
echo”“代码>
使用Location.reload();
if(isset($\u POST['upload'])和&isset($\u POST['datae'])){
$exp=explode('.',$_POST['datae']);
$targetName='../Upload/'.$exp[0];
$ext=$exp[1];
$target=$targetName.“.”$ext;
$count=0;
while(文件_存在($target)){
$target=$targetName.\u复制“$count.”.“$ext;
$count++;
}
复制('../print/'.$\u POST['datae'],$target);
回声“;
}
您可以使用和。像这样(未经测试):
您的代码中还存在一个潜在漏洞:有人可以使用post参数创建任何路径,如:
$\u POST['datae']='../../../env_file_,其中包含密码\u file_,来自受保护的\u dir'
为了避免这种情况,请阅读。在您的情况下,您可以检查文件名以确保没有人试图窃取您的文件:
if (isset($_POST['upload']) && isset($_POST['datae']) && preg_match('/^[a-z0-9_]+\.[a-z0-9_]+$/i', $_POST['datae'])) {
copy('../print/'.$_POST['datae'], '../Upload/'.$_POST['datae']);
echo "<meta http-equiv='refresh' content='1'>";
}
if(isset($\u POST['upload'])和isset($\u POST['datae'])和preg\u match('/^[a-z0-9\]+\[a-z0-9\]+$/i',$\u POST['datae'])){
复制('../print/'.$\u POST['datae'],'../Upload/'.$\u POST['datae']);
回声“;
}
请注意,必须使用fileinfo
或SplFileInfo
获取文件的基本名称/扩展名,因为名称中有多个点的文件仍然有效。
if (isset($_POST['upload']) && isset($_POST['datae'])) {
$exp = explode('.', $_POST['datae']);
$targetName = '../Upload/'.$exp[0];
$ext = $exp[1];
$target = $targetName .".". $ext;
$count = 0;
while (file_exists($target)) {
$target = $targetName . "_copy". $count .".". $ext;
$count++;
}
copy('../print/'.$_POST['datae'], $target);
echo "<meta http-equiv='refresh' content='1'>";
}
if (isset($_POST['upload']) && isset($_POST['datae'])) {
$uploadPath = '../Upload/' . $_POST['datae'];
if (file_exists($uploadPath)) {
$pathInfo = pathinfo($uploadPath);
$uniqueId = uniqid('_copy_');
$uploadPath = $pathInfo['dirname'] . '/' . $pathInfo['filename'] . $uniqueId . '.' . $pathInfo['extension'];
}
copy('../print/'.$_POST['datae'], $uploadPath);
}
if (isset($_POST['upload']) && isset($_POST['datae']) && preg_match('/^[a-z0-9_]+\.[a-z0-9_]+$/i', $_POST['datae'])) {
copy('../print/'.$_POST['datae'], '../Upload/'.$_POST['datae']);
echo "<meta http-equiv='refresh' content='1'>";
}