【问题标题】:Parse Error: syntax error: unexpected '{' [closed]解析错误:语法错误:意外'{' [关闭]
【发布时间】:2011-10-26 22:45:48
【问题描述】:

我有这段代码可以处理用户,然后将他们重定向到用户主页。

<?php
    $username = $_POST['username'];
    $password = $_POST['pwd'];

    $file = file_get_contents("userdb.html");
    if(!strpos($file, $username)) {
        echo "Your username was not found in our database. Please go back and try again.";
    } else {
        echo "Redirecting...";
        if (md5($password) == !strpos($file, (md5($password))) {
             echo "Redirecting..."
             header ('Location: ./userhome.php')
        } else {
             print "Whoops! Your password seems to be incorrect. Go back and try again."
        }
    }
?>

我得到了错误:

Parse error: syntax error, unexpected '{' in userprocess.php on line 11

有人能告诉我问题吗?我认为这可能是 if 语句中的 if ,但我能做些什么来替代?谢谢。

【问题讨论】:

  • 尝试使用好的IDE,你会看到标记的语法错误。 NetBeans 或 PhpStorm。
  • 你是不是马上回来问,为什么重定向不起作用?
  • 您真的将用户名和密码保存在 html 文件中吗?即使你用哈希和盐,你仍然不应该把它们分发出去。

标签: php syntax-error parse-error


【解决方案1】:

改变

if (md5($password) == !strpos($file, (md5($password)))

if (md5($password) == !strpos($file, md5($password)))

【讨论】:

    【解决方案2】:

    您在该行中缺少右括号:

    if (md5($password) == !strpos($file, (md5($password))) {
    

    【讨论】:

      【解决方案3】:
      <?php
          $username = $_POST['username'];
          $password = $_POST['pwd'];
      
          $file = file_get_contents("userdb.html");
          if(!strpos($file, $username)) {
              echo "Your username was not found in our database. Please go back and try again.";
          } else {
              echo "Redirecting...";
              if (md5($password) == !strpos($file, md5($password))) {
                   echo "Redirecting...";
                   header ('Location: ./userhome.php');
              } else {
                   print "Whoops! Your password seems to be incorrect. Go back and try again.";
              }
          }
      ?>
      

      【讨论】:

        【解决方案4】:

        首先,这一行缺少一个右括号:

        if (md5($password) == !strpos($file, (md5($password))) {
        

        计算() 的数量——它们需要匹配。

        修复此问题后,仍然会出现错误,因为 PHP 语句需要以分号结尾。

        以下所有行都缺少分号:

        echo "Redirecting..."
        header ('Location: ./userhome.php')
        print "Whoops! Your password seems to be incorrect. Go back and try again."
        

        您需要先修复所有问题,然后才能运行程序而不会出现语法错误。

        希望对您有所帮助。

        【讨论】:

        • 在我发布这篇文章后,我意识到分号(对我来说是一个非常愚蠢的问题),但感谢您修复 if 语句。这是一个经过深思熟虑的明确答案。谢谢。
        • 另外,echo 后跟 headerprint 是一个太明显的错误,不容忽视...
        • @Linus - 确实,但我已经通过指出分号而偏离了原始问题的范围。 :)
        猜你喜欢
        • 2014-04-02
        • 2014-09-02
        • 2014-04-26
        • 2013-10-02
        • 2023-04-09
        • 1970-01-01
        • 2013-05-13
        • 2011-09-09
        • 2011-06-07
        相关资源
        最近更新 更多