Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 允许某些图像格式不工作_Php_Getimagesize - Fatal编程技术网

Php 允许某些图像格式不工作

Php 允许某些图像格式不工作,php,getimagesize,Php,Getimagesize,我正试图允许某些格式上传到我的网站。我使用调用getimagesize()来标识图像类型(作为第三个参数返回)。我跟着去表演。代码如下: $img=$_FILES['img']; $info = getimagesize($img); if (($info[2] !== IMAGETYPE_GIF) && ($info[2] !== IMAGETYPE_JPEG) && ($info[2] !== IMAGETYPE_PNG)) { echo json_

我正试图允许某些格式上传到我的网站。我使用调用
getimagesize()
来标识图像类型(作为第三个参数返回)。我跟着去表演。代码如下:

$img=$_FILES['img'];
$info = getimagesize($img);

if (($info[2] !== IMAGETYPE_GIF) && ($info[2] !== IMAGETYPE_JPEG) && ($info[2] !== IMAGETYPE_PNG)) {
    echo json_encode(array('bad' => 'Bad Format'));
    exit();
} else {
    echo json_encode(array('good' => 'Good format'));
    exit();
}
无论我尝试上传什么文件格式,我总是得到
else
语句<代码>回声json_编码(数组('good'=>'good format')


为什么会发生这种情况?我如何修复它?

由于您使用的是
&&
运算符,因此它将始终为false

$img=$_FILES['img'];
$accepted = array('image/jpeg','image/png','image/gif');

if (in_array($img['type'],$accepted)) {
    echo json_encode(array('bad' => 'Good Format'));
    exit();
} else {
    echo json_encode(array('good' => 'Bad format'));
    exit();
}
使用
|
获取所需内容

使用
getimagesize()

将您的条件更改为
|
(或)


由于您使用的是
&&
运算符,因此它将始终为false

$img=$_FILES['img'];
$accepted = array('image/jpeg','image/png','image/gif');

if (in_array($img['type'],$accepted)) {
    echo json_encode(array('bad' => 'Good Format'));
    exit();
} else {
    echo json_encode(array('good' => 'Bad format'));
    exit();
}
使用
|
获取所需内容

使用
getimagesize()

将您的条件更改为
|
(或)


你用错了接线员。您使用的是
&&
(and),这意味着如果必须满足条件才能返回所需内容,则全部3。另外,您正在与一个
常量进行比较,我假设这是您想要与字符串进行比较的地方。因此,您可以轻松清理代码,如下所示:

if( !in_array($info[2], array('IMAGETYPE_GIF', 'IMAGETYPE_JPEG','IMAGETYPE_PNG') ) ) {
    echo json_encode(array('bad' => 'Good Format'));
    exit();
} else {
    echo json_encode(array('good' => 'Bad format'));
    exit();
}
或者实际使用
|
(或)运算符在您的条件下运行:

if (($info[2] === IMAGETYPE_GIF) || ($info[2] === IMAGETYPE_JPEG) || ($info[2] === IMAGETYPE_PNG)) {
    echo json_encode(array('bad' => 'Good Format'));
    exit();
} else {
    echo json_encode(array('good' => 'Bad format'));
    exit();
}

你用错了接线员。您使用的是
&&
(and),这意味着如果必须满足条件才能返回所需内容,则全部3。另外,您正在与一个
常量进行比较,我假设这是您想要与字符串进行比较的地方。因此,您可以轻松清理代码,如下所示:

if( !in_array($info[2], array('IMAGETYPE_GIF', 'IMAGETYPE_JPEG','IMAGETYPE_PNG') ) ) {
    echo json_encode(array('bad' => 'Good Format'));
    exit();
} else {
    echo json_encode(array('good' => 'Bad format'));
    exit();
}
或者实际使用
|
(或)运算符在您的条件下运行:

if (($info[2] === IMAGETYPE_GIF) || ($info[2] === IMAGETYPE_JPEG) || ($info[2] === IMAGETYPE_PNG)) {
    echo json_encode(array('bad' => 'Good Format'));
    exit();
} else {
    echo json_encode(array('good' => 'Bad format'));
    exit();
}

您要与
const
's-
IMAGETYPE\u JPEG
进行比较,请将它们放在引号中作为字符串进行比较-
'IMAGETYPE\u JPEG'
。另外,您正在使用
&
(和),您想使用
|
(或)。您正在与
const
's-
IMAGETYPE\u JPEG
进行比较,将它们放在引号中作为字符串进行比较-
'IMAGETYPE\u JPEG'
。另外,您正在使用
&&
(和),您想使用
|
(或)。我尝试了这两个示例,现在得到了第一个if语句。我用上载的任何文件得到了第一个if语句。您可以
打印($info)
并显示返回的内容吗?我在哪里可以看到结果?我尝试了这两个示例,现在我得到了第一条if语句。我得到了第一条if语句,它包含了我上传的任何文件。你能
打印($info)
并告诉我返回了什么吗?我在哪里可以看到结果?我试过了,但现在我得到了第一条if语句。你一直在使用
getimagesize()
。您必须传递
$\u文件['img'][tmp\u名称]
才能使其工作,例如:
getimagesize($\u文件['img'][tmp\u名称])
。由于文件类型已在
$\u文件中给出
。无需使用
getimagesize()
。您能告诉我如何使用
getimagesize()
吗?我试过了,但现在我得到了第一条if语句,您一直在以不同的方式使用
getimagesize()
。您必须传递
$\u文件['img'][tmp\u名称]
才能使其工作,例如:
getimagesize($\u文件['img'][tmp\u名称])
。由于文件类型已在
$\u文件中给出
。无需使用
getimagesize()
。您能告诉我如何使用
getimagesize()