由于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
舉報
2016-06-27
我覺得你這就挺好的啊
2016-07-30
我將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 "非法文件名";
}
}