【发布时间】:2015-03-29 07:53:32
【问题描述】:
几周前我开始学习 PHP,我对 PHP 代码块和设置 cookie 之间的条件嵌入 HTML 有点困惑。我想做的是一个简单的代码,它检查你的姓名、密码和电子邮件,设置 cookie(如果它们是有效的);当您已经登录时,您应该会看到“注销”按钮。所以,我的代码:
<?php
if (($_POST['name'] == 'admin') and ($_POST['pass'] == 'admin') and ($_POST['mail'] == 'admin@gmail.com')) {
setcookie("Test","Value");
echo "Success!!! <br/>";
}
if ($_POST['logout']) {
setcookie("Test", "", time() - 3600);
echo "Goodbye!";
}
?>
<?php if(isset($_COOKIE['Test'])) :
?>
<input type="submit" value="logout"/><br/>
<?php endif ?>
<?php if(!isset($_COOKIE['Test'])) :
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<form action="" method="POST">
<input type="text" name="name"/><br/>
<input type="text" name="pass"/><br/>
<input type="text" name="mail"/><br/>
<input type="submit" value="go"/><br/>
<?php endif ?>
但是,我不知道如何使它正常工作:当我输入正确的用户名、密码和邮件时,我没有看到“注销”按钮,还有一个表单,我需要再次输入用户名终于看到“注销”了。第二个问题,当我按下“注销”时,什么也没有发生。我想我无法设置 cookie,因为标头已经发送,但我不知道如何重写它。
【问题讨论】:
-
尽管有一些
undefined index错误,但您的代码在我的本地服务器上运行良好。我在正确的凭据上成功获得了logout按钮。该按钮不起作用。看看吧。 -
您似乎假设
setcookie会影响当前 请求的$_COOKIES集合,而不仅仅是后续请求?