语法错误,文件意外结束 - 看不到原因


Syntax Error, unexpected end of file - Can't see why

有人可以帮助我并解释为什么我使用以下代码出现此错误吗?

<html>
    <head>
    </head>
    <body>
        <?php
            if (!(isset($_COOKIE["loggedin"]))){
                ?>
                <form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST" name="name_form">
                    Username <input type="text" name="username">
                    <br/>
                    Password <input type="text" name="password">
                    <br/>
                    Remember Me <input type ="checkbox" name="remember_me" value="1">
                    <br/>
                    <input type="submit" name="submit" value="Log in">
                </form>
            }
    </body>
</html>
<?php
        if(preg_match("/<|>/", $_POST["username"])){    
            echo "do not log in";
        } 
        else if(preg_match("/<|>/", $_POST["password"])){   
            echo "do not log in";
        }
        else{
            //Open/create passwords.txt
            $passwordsFile = fopen("passwords.txt", "a");
            //write users username and password to passwords.txt
            $text_written = fwrite($passwordsFile, $_POST["username"] . "," . $_POST["password"] . "'r'n");
            fclose($passwordsFile);
            setcookie("loggedin", $_POST['username']);
            setcookie("loggedintime", time());
        }
    ?>

提前感谢您的帮助!我在这里看到过类似的帖子,但无论如何我都无法解决这个问题......

似乎您在结束 PHP 标记?>之前的末尾有一个额外的大括号,并且您忘记将 if 语句的前一个结束大括号}括起来: if (!(isset($_COOKIE["loggedin"]))){ 使用 PHP 结束和结束标记,正确的代码:

<html>
  <head>
  </head>
  <body>
    <?php if (!(isset($_COOKIE["loggedin"]))){ ?>
      <form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST" name="name_form">
          Username <input type="text" name="username">
          <br/>
          Password <input type="text" name="password">
          <br/>
          Remember Me <input type ="checkbox" name="remember_me" value="1">
          <br/>
          <input type="submit" name="submit" value="Log in">
      </form>
    <?php } ?>
  </body>
</html>
<?php
  if(preg_match("/<|>/", $_POST["username"])){
    echo "do not log in";
  }
  else if(preg_match("/<|>/", $_POST["password"])){
    echo "do not log in";
  }
  else{
    //Open/create passwords.txt
    $passwordsFile = fopen("passwords.txt", "a");
    //write users username and password to passwords.txt
    $text_written = fwrite($passwordsFile, $_POST["username"] . "," . $_POST["password"] . "'r'n");
    fclose($passwordsFile);
    setcookie("loggedin", $_POST['username']);
    setcookie("loggedintime", time());
  }
?>

在 php 块中完成 if 大括号。

<html>
<head>
</head>
<body>
    <?php
        if (!(isset($_COOKIE["loggedin"]))){
            ?>
            <form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST" name="name_form">
                Username <input type="text" name="username">
                <br/>
                Password <input type="text" name="password">
                <br/>
                Remember Me <input type ="checkbox" name="remember_me" value="1">
                <br/>
                <input type="submit" name="submit" value="Log in">
            </form>
       <?php  } ?>
</body>

我对你的代码做了一些更改,如果条件不在 php 标签( <?php ... ?> 中,则第一个的右括号)。尝试授予密码.txt文件读写权限

<html>
    <head>
    </head>
    <body>
        <?php
        if (!isset($_COOKIE["loggedin"])) {
            ?>
            <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST" name="name_form">
                Username <input type="text" name="username">
                <br/>
                Password <input type="text" name="password">
                <br/>
                Remember Me <input type ="checkbox" name="remember_me" value="1">
                <br/>
                <input type="submit" name="submit" value="Log in">
            </form>
        <?php } ?>
    </body>
</html>
<?php
if (!empty($_POST['submit'])) {
    if (preg_match("/<|>/", $_POST["username"])) {
        echo "do not log in";
    } else if (preg_match("/<|>/", $_POST["password"])) {
        echo "do not log in";
    } else {
        //Open/create passwords.txt
        $passwordsFile = fopen("passwords.txt", "a");
        //write users username and password to passwords.txt
        $text_written = fwrite($passwordsFile, $_POST["username"] . "," . $_POST["password"] . "'r'n");
        fclose($passwordsFile);
        setcookie("loggedin", $_POST['username']);
        setcookie("loggedintime", time());
    }
}
?>

尝试

 if (!isset($_COOKIE["loggedin"])){

而不是

 if (!(isset($_COOKIE["loggedin"]))){