【发布时间】:2023-03-04 00:35:01
【问题描述】:
我正在尝试使用 php 创建一个退出按钮。我可能会以完全错误的方式解决这个问题,但无论如何我试图通过单击按钮来删除 cookie。
<?php
function logOut() {
setcookie('userDetails[username]',"", time()-1200);
}
if(isset($_COOKIE["userDetails"])) {
echo "<table id='rtgLoginBox'>" ;
echo "<tr>" ;
echo "<td> Cookie " . $_COOKIE["userDetails"]["username"] . "!";
echo "<td></td>" ;
echo "</tr><tr>" ;
echo "<td><input id='rtgLoginBtn' type='submit' value='Log Out' onclick=\"logOut();\" /></td>" ;
echo "<td>";
echo "<td></td>" ;
echo "<td></td>" ;
echo "</tr><tr>" ;
echo "<td></td>" ;
echo "<td></td>" ;
echo "</tr>" ;
echo "</table>" ;
} else {
echo "<table id='rtgLoginBox'>" ;
echo "<tr>" ;
echo "<td><form action='process.php' method='post'>Username:</td>" ;
echo "<td><input name='usernamein' id='rtgUsernameTxt' type='text' size='20' class='rtgSignUpTxt'/></td>" ;
echo "</tr><tr>" ;
echo "<td>Password:</td>" ;
echo "<td><input name='passwordin' id='rtgPasswordTxt' type='password' size='20' class='rtgSignUpTxt' /></td>" ;
echo "</tr><tr>" ;
echo "<td></td>" ;
echo "<td><input id='rtgLoginBtn' type='submit' value='Log In' /> </form><input id='rtgLoginBtn' type='submit' value='Sign Up' onclick=\"location.href='SignUp.php'\" /></td>" ;
echo "</tr><tr>" ;
echo "<td></td>" ;
echo "<td><a href='mysite.com'><p style='padding:0 !important;'>Forgot Login Details?</p></a></td>" ;
echo "</tr>" ;
echo "</table>" ;
}
?>
据我在线阅读,这应该有效吗?我也尝试将函数放在 echoed table 下,但这也不起作用。
【问题讨论】:
-
PHP 不是事件驱动语言
-
那么我将如何弥合差距,以便注销按钮会取消设置 cookie?
-
问题是,当您将 cookie 设置为负时间以按照您应该的方式清除它时,在您尝试进一步处理之前,尚未将标头发送到浏览器在饼干上。只需取消设置 cookie。
unset($_COOKIE['userDetails']) -
@MetalFrog,我该怎么写?将用户发送到重定向注销页面会起作用吗?
-
我刚刚在我的评论中给了你代码。把它放在你的
setcookie之后……另外,我认为约翰也在做一些事情。你真的在调用你的注销函数吗?
标签: php forms button cookies unset