【问题标题】:Image url can't get through if statement图片 url 无法通过 if 语句
【发布时间】:2012-08-18 04:51:48
【问题描述】:

我将图像 url 发布到 php 脚本。在这个 php 脚本中,我获取图像 url 并检查扩展名是什么,以及这个扩展名是否匹配几个扩展名:

        $ext1 = pathinfo($_POST['form_pic'], PATHINFO_EXTENSION);
        $ext = strtolower($ext1);

        if($ext != 'jpg' || $ext != 'jpeg' || $ext != 'png' || $ext != 'gif') {
            echo $ext; echo "wrong";        
        }else{
            echo "a correct extension";
        }

但是,即使我发布了一个类似http://www.test.com/picture.jpg 的网址并且他获得了扩展名,在这种情况下为 jpg,他仍然会通过 if 语句,说扩展名不等于 if 语句中提到的扩展名。

我不知道我做错了什么?

【问题讨论】:

    标签: php pathinfo


    【解决方案1】:

    您的代码几乎是正确的,但在这种情况下您必须使用正确的运算符 &&

    请试试这个:

    $ext1 = pathinfo($_POST['form_pic'], PATHINFO_EXTENSION);
    $ext = strtolower($ext1);
    
       if($ext != 'jpg' && $ext != 'jpeg' && $ext != 'png' && $ext != 'gif') {
            echo $ext; echo "wrong";        
       } else {
            echo "A correct extension";
       }
    

    当您使用一系列否定语句时,始终应使用运算符&&

    有很多方法可以做你想做的事,但如果你想保持你的代码不变,只需将 || 更改为 && 就可以了。

    请阅读更多关于 PHP 中的Logical Operators

    【讨论】:

      【解决方案2】:

      你也可以这样做

      if(in_array($ext,array('gif','jpg','jpeg','png')){
      //good
      }else{
      //bad
      }
      

      【讨论】:

        【解决方案3】:

        尝试切换逻辑:

        if($ext == 'jpg' || $ext == 'jpeg' || $ext == 'png' || $ext == 'gif') {
            echo "a correct extension";
        }else{
            echo $ext; echo "wrong";        
        }
        

        使用 OR,如果满足任何条件,就会触发条件,并且由于 .jpg 扩展名与 .png 扩展名不匹配,它会为您提供 Wrong 消息。

        【讨论】:

          【解决方案4】:

          你想在这个逻辑中使用and,而不是or

          if($ext != 'jpg' && $ext != 'jpeg' && $ext != 'png' && $ext != 'gif')
          

          目前,您的if 声明显示“如果扩展名不是 jpg 或不是 png 或不是 gif”,即使扩展名被允许(即“jpg”),它也将始终匹配,因为"jpg" != "png"。

          您需要and,因为它会使if 语句变为“如果扩展名不是 jpg 且不是 png 且不是 gif”,那么它是无效的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-06-14
            • 2018-10-14
            • 2013-12-29
            • 1970-01-01
            • 2012-01-31
            • 1970-01-01
            • 2021-02-15
            相关资源
            最近更新 更多