【发布时间】:2014-04-29 02:12:19
【问题描述】:
我有这个 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 代码有什么问题。具体来说:
- 是什么让'$value = $_FILES[$valueofformfield]['name'];'一个未定义的变量?
- 是 $extension = end(explode(".", $value));获取上传文件扩展名的有效表达式?
- 是什么让 $valid = !in_array($extension, $allowed);传递参考的错误方式?
我已经在此处和其他网站上搜索了答案,但无济于事。
这个新手非常感谢帮助。谢谢
【问题讨论】:
-
不知道是什么导致了您的问题,但您可以学习一些有关如何上传和编码的知识。检查:stackoverflow.com/questions/198346/…
-
你如何调用
acceptedFileTypes()方法?因为在您的示例中,如果您没有为$valueofformfield传递“fileAttach”,那么您当然会看到该错误。 -
只是一个愚蠢的问题:是正确的:$value = $_FILES[$valueofformfield]['name'];或者它必须是: $value = $_FILES[$fieldname]['name']; ?
-
Crontab:对不起,我真的是一个新手,但是你是什么意思传递 fileattach。感谢回复
-
Dieter:谢谢你的提示,现在就学习
标签: php validation undefined