首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php问题检查图片格式

php问题检查图片格式
EN

Stack Overflow用户
提问于 2009-07-18 20:03:21
回答 2查看 170关注 0票数 0

我在检查图片格式代码时有问题:

代码语言:javascript
复制
// 0 means a successful transfer
if ($_FILES["fname"]["error"] > 0) {
    $_FILES["fname"]["name"] = "holder.jpg";        // line 3
    $imgData = $hyperlink.$_FILES["fname"]["name"]; // line 4
} else {
    $imgData = $hyperlink.$_FILES["fname"]["name"];
}

// Only accept files of jpeg format
$img = substr($imgData, 37);
$_FILES["fname"]["type"] = $img;

print "****";

print $_FILES["fname"]["type"];

//print $img;

print "****";

// only accept jpg images pjpeg is for Internet Explorer.. should be jpeg
if (!($_FILES["fname"]["type"] == "image/pjpeg") || !($_FILES["fname"]["type"== "image/jpg")) {
    print "I only accept jpg files!"; 
    exit(0);
}

它总是进入第一个if状态(第3和第4行)。如果我不上传图片,当图片转到if状态检查格式时,我只接受jpg文件。我猜它接受它为字符串,所以它说我只接受jpg文件。

EN

回答 2

Stack Overflow用户

发布于 2009-07-18 20:10:43

代码语言:javascript
复制
!($_FILES["fname"]["type"] == "image/pjpeg") || !($_FILES["fname"]["type"== "image/jpg")

是相同的

代码语言:javascript
复制
!( ($_FILES["fname"]["type"] == "image/pjpeg") && ($_FILES["fname"]["type"== "image/jpg") )

在这种形式中,您可以更好地看到$_FILES"fname“永远不能与"image/pjpeg”和"image/jpeg“相等,因此条件总是正确的。

票数 2
EN

Stack Overflow用户

发布于 2009-07-18 20:37:05

最好检查文件实际上是jpeg,而不是它在submit上的mime类型是否是jpeg。查看imagetype()函数,即getimagesize()

代码语言:javascript
复制
<?php

  if (exif_imagetype($_FILES['fname']['tmp_name']) != IMAGETYPE_JPEG) {
    echo "Image is not a JPEG!";
    exit;
  }

如果exif_imagetype不可用,getimagesize应该可以工作:

代码语言:javascript
复制
<?php
   if ((list($width, $height, $type, $attr) = getimagesize($_FILES['fname']['tmp_name'])) !== FALSE) {
     if ($type != IMAGETYPE_JPEG) {
       echo "Image is not a JPEG!";
       exit;
     }
   }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1148444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档