【问题标题】:$_FILES['image']['type'] not filtering properly$_FILES['image']['type'] 没有正确过滤
【发布时间】:2013-11-14 18:47:12
【问题描述】:

我的英语不太好,抱歉。

我正在使用 PHP 语言,但在上传个人资料图片时遇到问题 我的代码根据类型过滤图像,但在服务器上我有不属于可接受类型的文件,总是来自同一个 IP。

我认为这是因为我的类型检查但不确定。请帮忙!

$bild = array('jpg', 'jpeg', 'png', 'gif');
if (in_array($_FILES['image']['type'], $bild) {
    mysqli_laden($_FILES);
}

【问题讨论】:

  • 也许this 有帮助:“永远不要相信$_FILES["image"]["type"]。它会接受从浏览器发送的任何内容,所以不要相信这个图像类型。我建议使用finfo_open "

标签: php file-upload


【解决方案1】:

我假设 mysqli_laden 是一个上传到服务器的自定义函数。使用 $_FILES["image"]["type"] 时要小心,因为它从浏览器而不是文件本身获取信息。您应该使用更可靠的 finfo_open 函数来验证文件的 MIME 类型。在这里查看:http://www.php.net/manual/en/function.finfo-open.php

你的代码看起来像这样

$bild = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');
$image = $_FILES['image']['type'];
$finfo = new finfo(FILEINFO_MIME);
$image_inf = $finfo->file($image);

if (in_array($image_inf, $bild) {
    mysqli_laden($_FILES);
}

希望对你有帮助

【讨论】:

  • 不确定但我以为是$finfo->file(FILEINFO_MIME, $image);
  • @putvande:没有。us1.php.net/finfo_file$finfo = new finfo(FILEINFO_MIME); $image_inf = $finfo->file($image);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
相关资源
最近更新 更多