【问题标题】:php parse error: unexpected $end [duplicate]php解析错误:意外$end [重复]
【发布时间】:2015-08-20 09:53:04
【问题描述】:

我有一些 PHP 代码从索引中获取一个帖子,然后允许你登录。当我运行它时它说:

解析错误:意外 $end;

如果有人有任何想法,请尽快告诉我,因为在学校上课时需要它。

<?php

    $uname = $_POST["username"];

    $resultCount = 0;

    class MyDB extends SQLite3
   {
      function __construct()
      {
         $this->open('users.db');
      }
   }
   $db = new MyDB();
   if(!$db){
      echo $db->lastErrorMsg();
   }

    $sql =<<<EOF
    SELECT $uname from users;
    EOF;

    $ret = $db->exec($sql);

    foreach($ret as $uname){
            $resultCount++;
    }

    if($resultCount > 1){
        echo "failed to log in!";
        echo "please return <a href='index.php'>home</a>";
    }
    else{
        echo "logged in succesfully!";
        echo "welcome" . $_POST[username];
    }
?>

【问题讨论】:

  • $_POST[username](倒数第二行)应该是$_POST["username"]。可能还有更多语法错误。
  • @Halcyon 这不是语法错误...
  • halcyon 我这样做了,然后我说了意外的 '"',期待 T_STRING 或 T_VARIABLE 或 T_NUM_STRING
  • 请改用$sql = "SELECT $uname from users";。注意力!闻起来像 SQL 注入问题...
  • SELECT $uname from users; 这会咬你的。您可能希望为特定用户而不是特定列选择列。而且heredoc EOF;前面不能有空格,必须在行首。

标签: php html


【解决方案1】:

这里可能有问题:

   $sql =<<<EOF
   SELECT $uname from users;
   EOF;

EOF; 应该在行首,前面不能有空格。

见:https://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

这尤其意味着标识符不能缩进


$_POST[username](倒数第二行)应该是$_POST["username"]。不过,这可能只是一个警告。

【讨论】:

    【解决方案2】:

    以另一种方式更改括号,而且您不必这样做 只需将此代码添加到页面顶部

    <? session_start(); ?>

    当你回显用户名时

    &lt;?=$_SESSION['sess_user'];?&gt;&lt;? echo $_SESSION['sess_user'];?&gt;

    或者你可以详细说明一下 <? $rot = $username ?> <? echo $rot ?>

    【讨论】:

    • $_POST 方法经常携带大量错误。所以我建议我的建议!试试看,让我知道它是如何工作的。
    • 如果$_POST 方法经常携带大量错误,您将如何以及在何处为$_SESSION['sess_user'] 赋值?
    • 这是一个荒谬的问题,这是朋友的答案。 $_POST 方法是自动的,$_SESSION 是手动的,因此只要你有一个实际的 SQL 数据库,会话就可以运行,并且只要你已经启动了会话,如果使用 post,那么所有的东西都必须输入完美.. 几十无意义的代码语句。
    • 和 $_POST 的位置相同。当然。
    • 回声没有任何价值.. wtf r u 谈论兄弟。你知道怎么写代码吗?
    猜你喜欢
    • 1970-01-01
    • 2012-08-15
    • 2012-03-19
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 2018-06-29
    • 1970-01-01
    相关资源
    最近更新 更多