我有这个PHP函数来验证以表格形式上传的文件类型及其扩展名:
public function acceptedFileTypes($valueofformfield, $fieldname) {
$allowed = array('doc', 'pdf', 'docx', 'jpg', 'gif','png');
$value = $_FILES[$valueofformfield]['name']; //UNDEFINED VARIABLE
$extension = end(explode(".", $value));
$valid = !in_array($extension, $allowed); //STRICT STANDARDS: ONLY VARIABLES SHOULD BE PASSED BY REFERENCE
if ($valid == FALSE) {
$this->emailErrors[] = "Your uploaded files cannot be accepted; only .doc, .docx, .pdf, or .jpg files only in $fieldname";
}
return
var_dump($ _ FILES)揭示:
array (size=1)
'fileAttach' =>
array (size=5)
'name' => string 'mysql.init' (length=10) //EXAMPLE FILE USED
'type' => string 'application/octet-stream' (length=24)
'tmp_name' => string 'C:\wamp\tmp\phpD106.tmp' (length=23)
'error' => int 0
'size' => int 101
如果你在笔记上注意到,那么我试图找到答案时就会出现错误。我的PHP代码有什么问题。具体是:
我在这里和其他网站搜索了答案,但无济于事。
帮助非常感谢这位新手。谢谢
答案 0 :(得分:0)
$ value = $ _FILES [$ valueofformfield] [' name'];
我的估计,valueofformfield的价值不是' fileAttach' .... var_dump是你的朋友!
也许它是:$ value = $ _FILES [$ fieldname] [' name']; - > //没有你形式的盲目猜测。
如果您未定义警告,则不会设置$ value,因此param不存在。这给出了这个错误:只有变量才能通过引用传递。这里抛出错误:$ extension = end(explode("。",$ value));
检查params / keys是否存在(isset)以防止错误!
$ valid =!in_array($ extension,$ allowed); - >你的支票应该如何保存?将.exe文件重命名为docx将使用此检查上传。