Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP在上传前验证文件_Php - Fatal编程技术网

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是个坏主意。这就是我更改服务器端句柄的原因。请解释代码在哪种情况下有效,在哪种情况下无效。