2016-02-17 32 views
-1

有人可以帮我解释一下我为什么我得到这个错误与下面的代码,请:语法错误,意外的文件结尾 - 不明白为什么

<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()); 
     } 
    ?> 

在此先感谢您的帮助!我在这里看到过类似的帖子,但我无法解决这个问题...

+2

的'}'的形式和身体的结束标记之间不封闭'' – Max

回答

2

看来你有一个额外的花括号在结束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()); 
    } 
?> 
+0

已经解决了这个问题,但没有工作...我粘贴错误 – Fodrigoal

+0

看到我的新编辑@Fodrigoal,发现另一个语法问题。 –

+0

谢谢@flacle!我不知道PHP结束标记应该在}之前出现! – Fodrigoal

1

完成,如果括号中的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> 

1

我在代码中做了一些更改,第一个if条件的括号不在php标记中(<?php ... ?>)。尽量给password.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()); 
    } 
} 
?> 
+0

谢谢@Karthik! – Fodrigoal

1

尝试

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

而不是

if (!(isset($_COOKIE["loggedin"]))){ 
相关问题