首页 > 解决方案 > PHP 的 _GET 不支持 if()

问题描述

我正在使用以下代码:

if(isset($_GET['TDEnderEmail']) || htmlspecialchars($_GET['TDEnderEmail'])){
  $VEENFSL = strval($_GET['TDEnderEmail']);
  if(strpos($VEENFSL, "@enderadel.cf") > 0 && strlen($VEENFSL) > 5 && strlen($VEENFSL) < 22){
    return true;
  }
}

并且虽然那$VEENFSLif (strpos($VEENFSL, "@enderadel.cf") > 0 && strlen($VEENFSL) > 5 && strlen($VEENFSL) < 22) 语句的值在示例中是轮到的user@enderadel.cf——if()从不返回 true

标签: phpwebget

解决方案


请注意,strpos它不像您可能认为的那样工作:正如文档所述,strpos

返回针相对于 haystack 字符串开头的位置(与偏移量无关)。另请注意,字符串位置从 0 开始,而不是 1。

如果未找到针头,则返回 FALSE。

警告 此函数可能返回布尔值 FALSE,但也可能返回计算结果为 FALSE 的非布尔值。请阅读有关布尔值的部分以获取更多信息。使用 === 运算符测试此函数的返回值。

这意味着您的示例字符串可能在位置 0 匹配,因此

strpos($VEENFSL, "@enderadel.cf") > 0

false

因此,您应该将其替换为

strpos($VEENFSL, "@enderadel.cf") !== false

推荐阅读