【问题标题】:PHP if statement doesn't work properly (paradoxical)PHP if 语句不能正常工作(自相矛盾)
【发布时间】:2017-10-20 12:48:21
【问题描述】:

我遇到了一个奇怪的问题。我想用 PHP 编写一个简单的多图像上传脚本。 因此,我需要一个 if 语句来检查图像是否具有正确的图像类型,这不能按预期工作。我尝试上传的图像是 .jpg 图像。 “jpg”信息存储在变量 $mediaFileType 中,由 if 语句检查。通常它现在应该在 else 语句中执行脚本,但它总是做相反的事情并声明“jpg”!=“jpg”=true。显然不是。那么我在这里错过了什么?

if($mediaFileType != 'jpg' && $mediaFileType != 'png' && $mediaFileType != 'jpeg')
 {

    echo 'Wrong Media Type<br>';
    echo $mediaFileType;
    exit();

} else {
    ....
}

网站简单地说:

Wrong Media Type
jpg

【问题讨论】:

  • 一个文件的文件扩展名不能相同,您需要使用“OR”运算符进行检查。您甚至可能想为此发布 html 和 php 的其余部分
  • 试试!in_array(),它有时可以让事情变得比多个ifs更容易一些。 !in_array($mediaFileType, ['jpg', 'png', 'jpeg'])。如果这不起作用,请尝试修剪 $mediaFileTypevar_dump($mediaFileType) 以确保没有任何多余的字符。
  • 你想了解运算符优先级...php.net/manual/en/language.operators.php
  • 你能不能用 var_dump() mediaFileType 而不是回显它,好吗?该字符串可能包含不可见的空白字符。
  • 尝试修剪 $mediaFileType, trim($mediaFileType)

标签: php if-statement image-upload


【解决方案1】:

您的问题可能是空格字符

if (!in_array(trim($mediaFileType), ['jpg', 'png', 'jpeg']))
{
    echo 'Wrong Media Type<br/>';
    var_dump($mediaFileType);
    exit();
}
...

【讨论】:

  • 你们都说它是一个空白字符是对的。谢谢! :)
【解决方案2】:

你可以使用:

if (!in_array(trim($mediaFileType), ['jpg', 'png', 'jpeg'])) {
    echo 'Wrong Media Type<br>';
    echo $mediaFileType;
    exit();
}

【讨论】:

    猜你喜欢
    • 2011-03-14
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2022-11-13
    相关资源
    最近更新 更多