为了账号安全,请及时绑定邮箱和手机立即绑定

由于basename会过滤掉/和\,大家看看我这个解决办法如何?

if(!preg_match($patten,basename($filename))

改为

if(!preg_match($patten,basename($filename))&&pathinfo($filename,PATHINFO_FILENAME)!=''&&pathinfo($filename,PATHINFO_DIRNAME)!='.')

这样的话就可以解决问题,或者说哪位大神有更好的办法可以说说呀

正在回答

2 回答

我觉得你这就挺好的啊

0 回复 有任何疑惑可以回复我~

我将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 "非法文件名";

}

}

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

由于basename会过滤掉/和\,大家看看我这个解决办法如何?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信