繁体   English   中英

PHP文件上传错误的文件类型

[英]PHP file upload incorrect file type

我正在制作一个社交网站,并试图建立该网站以便您可以更改头像,这是我的头像更改过程代码:

mysql_connect("website", "dbuser", "dbpass");
    mysql_select_db("dbtable");
    $upload_path = "./account/{$_SESSION["id"]}/";
    $pw = $_POST['password'];
    $email = $_POST['email'];
    $q = mysql_query("SELECT * FROM `users` WHERE `email`='$email' AND `password`='$pw' LIMIT 1");
    if(!$q) die(mysql_error());
    if(mysql_num_rows($q) == 0) die("Authorization failed.");
    $allowed =  array('png');
    $filename = $_FILES['newimage']['name'];
    if(!($_FILES['newimage']['type'] == 'image/png')) {
        die('The file is incorrect, only PNG files are allowed.');
    }
    $max_filesize = 10485760;
    if(filesize($_FILES['newimage']['tmp_name']) > $max_filesize)
        die('The file you attempted to upload is too large.');
    if(!is_writable($upload_path))
      die('You cannot upload to the specified directory, please CHMOD it to 777.');
    if(move_uploaded_file($_FILES['newimage']['tmp_name'],"./account/".$_SESSION['id']."/profile.png"))
        echo 'Successfully changed avatar.';
    else
        echo 'There was an error during the file upload.  Please try again.';

这里的问题是它总是说“文件不正确,只允许PNG文件。” 我没有发现这段代码有什么问题,我该如何解决?

在此行:

if(!($_FILES['newimage']['type'] == 'image/png')) { die('The file is incorrect, only PNG files are allowed.'); }

您应该将该if语句更改为:

$allowedImages = array('image/png'); if(!in_array($_FILES['newimage']['type'], $allowedImages)) { die('The file is incorrect, only PNG files are allowed.'); }

现在,您可以通过将图像类型添加到数组中来添加图像类型,如下所示:

$allowedImages = array('image/png', 'image/jpg', 'image/gif');

因为您添加的3行是为了检查文件类型是否仅与图像/ PNG相同。

因为这:

if(!($_FILES['newimage']['type'] == 'image/png')) {
    die('The file is incorrect, only PNG files are allowed.');
}

您的意思是:如果文件类型不是.PNG,请退出当前脚本并说只允许png,
您可以删除此文件,但可以上传任何文件类型,

但由于您只需要图片,因此请更改if语句以允许png,jpg,gif和要允许的任何图像类型。 (有关此信息,请参见@robin的答案)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM