我在检查图片格式代码时有问题:
// 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文件。
发布于 2009-07-18 20:10:43
!($_FILES["fname"]["type"] == "image/pjpeg") || !($_FILES["fname"]["type"== "image/jpg")是相同的
!( ($_FILES["fname"]["type"] == "image/pjpeg") && ($_FILES["fname"]["type"== "image/jpg") )在这种形式中,您可以更好地看到$_FILES"fname“永远不能与"image/pjpeg”和"image/jpeg“相等,因此条件总是正确的。
发布于 2009-07-18 20:37:05
最好检查文件实际上是jpeg,而不是它在submit上的mime类型是否是jpeg。查看imagetype()函数,即getimagesize()。
<?php
if (exif_imagetype($_FILES['fname']['tmp_name']) != IMAGETYPE_JPEG) {
echo "Image is not a JPEG!";
exit;
}如果exif_imagetype不可用,getimagesize应该可以工作:
<?php
if ((list($width, $height, $type, $attr) = getimagesize($_FILES['fname']['tmp_name'])) !== FALSE) {
if ($type != IMAGETYPE_JPEG) {
echo "Image is not a JPEG!";
exit;
}
}https://stackoverflow.com/questions/1148444
复制相似问题