【问题标题】:What's wrong with this if-statement in phpphp中的这个if语句有什么问题
【发布时间】:2011-10-05 05:53:20
【问题描述】:
if ((isset($post["username"]) && isset($post["password"])) && (!empty($post["username"]) && !empty($post["password"])) && ($post["username"] == "something" && $post["password"] == "something"))
{

}

错误:语法错误,[此处的文件名中出现意外的 T_IF,但我宁愿不公开文件路径和名称]

我知道这有点复杂,但是当我收到上述错误时,这个 if 语句有什么问题。虽然我检查了好几次。

【问题讨论】:

  • 应该是之前那几行的错误。
  • 为什么同时使用isset()和empty()?为了简化这样的陈述,我通常使用某种标记来知道何时提交公式。通过这样做,我只需要验证用户名和密码的实际内容
  • if 语句之前的唯一行是 <?php $post = $_POST,只有 2 行代码。
  • @Muncken isset() 用于判断变量是否已设置但仍可能为空变量,empty 用于检查是否为空。到目前为止,如果所有这两个条件都满足,那么检查实际的usernamepassword
  • 您在 $post = $_POST 上缺少分号。它应该是 $post = $_POST;您的问题将得到解决。

标签: php


【解决方案1】:

那个错误unexpected T_IF 表示 if 是意外的,这意味着在 if 之前有一个错误。可能是一个被删除的分号。检查上面的 if 你应该找到你的问题。

【讨论】:

  • 是的,很有趣。我正在使用 Vb.NET 并忘记使用“分号”。顺便谢谢。
  • 没问题。我主要是一名 c/PHP 开发人员,但我在学校使用过 VB.Net,我总是在 VB 的行尾加一个分号。
  • 是的,但是 Vb.NET 不允许我这样做。
【解决方案2】:

我可能提出的另一个建议(为了以后可能需要编辑您的代码的其他人)是分解 if 语句:

$valuesAreSet = isset($post["username"]) && isset($post["password"]);
$areNotEmpty = !empty($post["username"]) && !empty($post["password"]);
$areValid = $post["username"] == "something" && $post["password"] == "something";

if ($areSet && $areNotEmpty && $areValid) {
    ...
}

【讨论】:

  • 我有点喜欢这种方式 :) 谢谢。
【解决方案3】:

您可能在if 之前的行中缺少分号。

【讨论】:

    【解决方案4】:

    确保您没有遗漏任何分号。

    还只是为了检查一下,您确实想使用变量 $post 而不是 $_POST 对吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多