0

你能帮帮我吗,我正在学习会话的概念,它可以帮助我用户登录。我做了以下 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>";
?>
4

5 回答 5

4

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

它需要是

<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');

(蒂@保罗)

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

于 2012-05-14T12:25:27.713 回答
1

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

<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>
于 2012-05-14T12:27:04.547 回答
1
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> ";
于 2012-05-14T12:27:11.097 回答
1

将其更改为

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

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

并改变:

header("location: index.html");
于 2012-05-14T12:27:20.287 回答
0

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

于 2012-05-14T12:28:32.187 回答