由于basename会过滤掉/和\,大家看看我这个解决办法如何?
将
if(!preg_match($patten,basename($filename))
改为
if(!preg_match($patten,basename($filename))&&pathinfo($filename,PATHINFO_FILENAME)!=''&&pathinfo($filename,PATHINFO_DIRNAME)!='.')
这样的话就可以解决问题,或者说哪位大神有更好的办法可以说说呀
将
if(!preg_match($patten,basename($filename))
改为
if(!preg_match($patten,basename($filename))&&pathinfo($filename,PATHINFO_FILENAME)!=''&&pathinfo($filename,PATHINFO_DIRNAME)!='.')
这样的话就可以解决问题,或者说哪位大神有更好的办法可以说说呀
2016-05-07
我将createFile方法改成两个参数的:
1、index.php文件中 ——————————————————————————
if ($act == "创建文件") {
$mes=createFile($filename,$path."/".$filename);
alertMes($mes, $redirect);
}
2、file.func.php文件中 ——————————————————————————
function createFile($filename,$full_filename) {
//file/1.txt
//验证文件名的合法性,是否包含/,*,<>,?,|
$pattern = "/[\/,\*,<>,\?\|]/";
if (! preg_match ( $pattern, $filename ) ) {
//检测当前目录下是否存在同名文件
if (! file_exists ( $full_filename )) {
//通过touch($filename)来创建
if (touch ( $full_filename )) {
return "文件创建成功";
} else {
return "文件创建失败";
}
} else {
return "文件名重复!请重命名后再创建新文件。";
}
} else {
return "非法文件名";
}
}
举报