文件类型检查不起作用


File type check is not working

在服务器上上传时,我遇到了文件类型检查问题。我的功能没有正常工作。在服务器上总是上传绝对的一切。请帮我

<?php
session_start();
include_once 'dbconnect.php';
if (isset($_POST['ulozitzmeny'])) {
    $valid_mime_types = array(
        "image/gif",
        "image/png",
        "image/jpg",
        "image/jpeg",
    );
    if (in_array($_FILES["file"]["type"], $valid_mime_types)) {
        $file = rand(1000, 100000) . "-" . $_FILES['file']['name'];
        $file_loc = $_FILES['file']['tmp_name'];
        $file_size = $_FILES['file']['size'];
        $file_type = $_FILES['file']['type'];
        $folder = "images";
        $new_size = $file_size / 1024;
        $new_file_name = strtolower($file);
        $final_file = str_replace(' ', '-', $new_file_name);
        if (move_uploaded_file($file_loc, $folder . $final_file)) {
            $sql = "UPDATE users SET file='$file', type='$file_type', size='$file_size' WHERE username = '$_SESSION[user]'";
            mysql_query($sql);
        }
    }else{
        echo 'error';
    }
}
?>

有一种更简单的方法来验证上传的文件类型。使用fileinfo获取上传文件的扩展名,然后与允许的文件扩展名进行比较。

以下是参考资料:

  • 文件信息

你的代码应该是这样的:

// your code
// valid file extensions
$valid_extensions = array("gif", "png", "jpg", "jpeg");
// get the file extension
$ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));  // png
// now check against permissible extensions
if(in_array($ext, $valid_extensions)){
    // allowed
}else{
    // not allowed
}
// your code