【问题标题】:Whats wrong with my session code我的会话代码有什么问题
【发布时间】:2012-05-14 12:23:46
【问题描述】:

你们能帮帮我吗,我正在学习会话的概念,它可以帮助我进行用户登录。我执行了以下 php 代码,但收到此错误:解析错误:语法错误,意外 T_STRING,期待', ' 或者 ';'在第 12 行的 C:\wamp\www\w3\login.php 中。

<?php
    session_start();
        echo "      <html>
                    <body>
                    <br/>
                    <table border = '0'  width = '100%' height = '100%'><tr>
                    <td width = '30%' height = '100%'>&nbsp;</td><td valign = 'top'>    
                    <a href='display.html'>Display</a>";
    if(!isset($_SESSION['loged'])){     
        echo "      <fieldset><legend>Log In</legend>
                    <center><table border = '0'>
                    <form action="log.php" method="post">
                    <tr><td>Username:</td><td><input type="text" name="username" /></td></tr>   
                    <tr><td>Password:</td><td><input type="password" name="pwd" /></td></tr>
                    <tr><td colspan = '2' align = 'center'><input type="submit" value="submit" /></td></tr>
                    </form>
                    </table></center>
                    </fieldset> ";
    }

    else{
        header(location:index.html);
        die();
    }
        echo "      </td><td width = '30%' height = '100%'>&nbsp;</td>  
                    </tr></table>       
    </body>
    </html>";
?>

【问题讨论】:

  • 从语法着色中可以看出,第 12 行的非转义引号终止了字符串。使用\" 转义双引号分隔字符串中的双引号。
  • 一个建议。当你看到这样的错误时,尝试从上面提到的行开始调试。这些是基本的调试,如果你使用了一个好的 PHPIDE 软件,你就会注意到这些。

标签: php html session syntax


【解决方案1】:

您需要在字符串中转义您的"

应该是的

<form action=\"log.php\" method=\"post\">

或更好:

<form action='log.php' method='post'>

更好:

echo ' .... action="..." '

最佳:

 <?php php-code... ?>
 HTML-Code 
 <?php php-code... ?>

这当然对于你的所有代码行都是必要的。

编辑:

另外,你需要写:

header('location:index.html');

(ty @Paul)

如 cmets 中所述,最好不要回显如此大的 html 段。尤其是在使用双引号时,php-parser 做了很多不必要的工作。

【讨论】:

  • 或者更好的是,根本不要echo这么大的纯HTML片段。
  • 以后应该是header('location:index.html');
【解决方案2】:

在这部分使用单引号或转义双引号:

<form action="log.php" method="post">
   <tr><td>Username:</td><td><input type="text" name="username" /></td></tr>   
   <tr><td>Password:</td><td><input type="password" name="pwd" /></td></tr>
   <tr><td colspan = '2' align = 'center'><input type="submit" value="submit" /></td></tr>
</form>

【讨论】:

    【解决方案3】:
    echo "      <fieldset><legend>Log In</legend>
                        <center><table border = '0'>
                        <form action="log.php" method="post">
                        <tr><td>Username:</td><td><input type="text" name="username" /></td></tr>   
                        <tr><td>Password:</td><td><input type="password" name="pwd" /></td></tr>
                        <tr><td colspan = '2' align = 'center'><input type="submit" value="submit" /></td></tr>
                        </form>
                        </table></center>
                        </fieldset> ";
    

    引用有问题。

    试试

    echo "      <fieldset><legend>Log In</legend>
                            <center><table border = '0'>
                            <form action='log.php' method='post'>
                            <tr><td>Username:</td><td><input type='text' name='username' /></td></tr>   
                            <tr><td>Password:</td><td><input type='password' name='pwd' /></td></tr>
                            <tr><td colspan = '2' align = 'center'><input type='submit' value='submit' /></td></tr>
                            </form>
                            </table></center>
                            </fieldset> ";
    

    【讨论】:

      【解决方案4】:

      改成

      <form action='log.php' method='post'>
      

      之后,您还可以在以下几行中多次使用它 - 将双引号更改为单引号。

      还有变化:

      header("location: index.html");
      

      【讨论】:

        【解决方案5】:

        我认为您的第一个问题是逃避问题。当你做你的回声时,你必须为每个 " 字符加一个 \

        【讨论】:

        • 当你做回声时,你必须为每个 " 字符添加一个 \ 错误。
        • 我不明白你的评论。他写道: echo "
          Log In
          Username :
          密码:
          ";
        • 如果你使用echo '';,你不需要转义任何东西。
        • 完全同意你的看法。但问题是一样的,他必须逃避字符串中的每个 '
        • erm 没有。 echo '&lt;form action="log.php" method="post"&gt;';你不需要逃跑。只需要在 htmls 中使用 '" 来回显,反之亦然。
        猜你喜欢
        • 2011-07-28
        • 1970-01-01
        • 2019-06-06
        • 1970-01-01
        • 2010-11-08
        相关资源
        最近更新 更多