PHP在上传前验证文件
我在上传之前检查文件有点问题 我当前用于检查的代码如下:PHP在上传前验证文件,php,Php,我在上传之前检查文件有点问题 我当前用于检查的代码如下: public function verify_file(){ $allowedExts = array("jpeg", "jpg", "png", "bmp"); $temp = explode(".", $_FILES["page-add-file-box"]["name"]); $extension = end($temp); if ((($_FILES["page-add-file-box"]["t
public function verify_file(){
$allowedExts = array("jpeg", "jpg", "png", "bmp");
$temp = explode(".", $_FILES["page-add-file-box"]["name"]);
$extension = end($temp);
if ((($_FILES["page-add-file-box"]["type"] == "image/jpeg")
|| ($_FILES["page-add-file-box"]["type"] == "image/jpg")
|| ($_FILES["page-add-file-box"]["type"] == "image/pjpeg")
|| ($_FILES["page-add-file-box"]["type"] == "image/x-png")
|| ($_FILES["page-add-file-box"]["type"] == "image/png"))
&& ($_FILES["page-add-file-box"]["size"] <= 100000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["page-add-file-box"]["error"] > 0)
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
为什么上面的代码有效而下面的代码无效
if(($_FILES["page-add-file-box"]["type"] != "image/jpeg")
&& ($_FILES["page-add-file-box"]["type"] != "image/jpg")
&& ($_FILES["page-add-file-box"]["type"] != "image/pjpeg")
&& ($_FILES["page-add-file-box"]["type"] != "image/x-png")
&& ($_FILES["page-add-file-box"]["type"] != "image/png")
&& (!in_array($extension, $allowedExts))){
return false;
}else{
if($_FILES["page-add-file-box"]["size"] <= 100000){
return false;
}
if($_FILES["page-add-file-box"]["error"] > 0){
return false;
}
}
return true;
我已经测试过了,我知道它在第一次返回false时失败了,之后!在_array中,PHP在上传文件之前不会获取该文件,对吗?任何上传前验证都将通过Javascript完成。我认为Javascript上传前验证不是一个好主意。任何用户都可以通过直接将文件发送到服务器来轻松绕过它。不,你从不使用JS进行验证,它可能会被关闭,或者一个非常旧的浏览器甚至无法使用它。JS中的验证与HTML对象标记一样无用……Javascript是个坏主意。这就是我更改服务器端句柄的原因。请解释代码在哪种情况下有效,在哪种情况下无效。