有人可以帮助我并解释为什么我使用以下代码出现此错误吗?
<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"]))){