PHP代码块之间的条件嵌入html+;设置cookies
几周前我开始学习PHP,我对PHP代码块之间的条件嵌入HTML和设置cookie有点困惑。我想做的是一个简单的代码,检查你的名字,密码和电子邮件,设置cookie(如果它们是有效的);当您已经登录时,您应该看到“注销”按钮。所以,我的代码:PHP代码块之间的条件嵌入html+;设置cookies,php,cookies,Php,Cookies,几周前我开始学习PHP,我对PHP代码块之间的条件嵌入HTML和设置cookie有点困惑。我想做的是一个简单的代码,检查你的名字,密码和电子邮件,设置cookie(如果它们是有效的);当您已经登录时,您应该看到“注销”按钮。所以,我的代码: <?php if (($_POST['name'] == 'admin') and ($_POST['pass'] == 'admin') and ($_POST['mail'] == 'admin@gmail.com')) {
<?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,因为已经发送了头,但我不知道如何重写它。per@RowlandShaw在评论中指出,
setcookie()
将只影响未来的请求,而不会影响当前请求
这是您更正的代码:
<?php
if($_POST)
{
if(isset($_POST['name']) && isset($_POST['pass']) && isset($_POST['mail']))
{
if (($_POST['name'] == 'admin') and ($_POST['pass'] == 'admin') and ($_POST['mail'] == 'admin@gmail.com')) {
setcookie("Test","Value");
echo "Success!!! <br/>";
echo '<form action="" method="POST">'.
'<input type="submit" value="logout" name="logout"/><br/>'.
'</form>';
}
}
if (isset($_POST['logout'])) {
setcookie("Test", "", time() - 3600);
echo "Goodbye!";
echo '<br/>';
echo '<a href="'.$_SERVER['PHP_SELF'].'">Login back</a>';
}
}
else
{
?>
<!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 } ?>
忽略一些未定义的索引
错误,您的代码在我的本地服务器上运行良好。。我在正确的凭证上成功地按下了注销按钮。但是按钮不起作用。查看一下。您似乎假设setcookie
会影响当前请求的$\u cookie
收集,而不仅仅是后续请求?