我正在尝试使用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表下,但这也不起作用。
答案 0 :(得分:1)
如果他们按下注销按钮然后将其重定向到名为whatever.php的新页面,则此代码将导致此人注销。你显然可以把它变成你想要的任何东西。
<?php
function logOut() {
setcookie('userDetails[username]',"", time()-1200);
unset($_COOKIE['userDetails']);
}
if ('POST' === $_SERVER['REQUEST_METHOD'])
{
logOut();
header('Location: /whatever.php');
exit;
}
if(isset($_COOKIE["userDetails"])) {
echo "<form action='".htmlspecialchars($_SERVER['PHP_SELF'])."' method='post'><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' /></td>" ;
echo "<td>";
echo "<td></td>" ;
echo "<td></td>" ;
echo "</tr><tr>" ;
echo "<td></td>" ;
echo "<td></td>" ;
echo "</tr>" ;
echo "</table></form>" ;
} 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>" ;
}
?>
答案 1 :(得分:1)
正如你所说“onclick ='logOut()'”,你是从javascript调用函数logOut(),而不是php ....
我们可能认为程序总是交互式的,我们可以随时调用某种功能,但是php不能像那样工作......要理解这一点,你应该更多地了解浏览器/服务器模型。
由于某人需要一个php页面,例如index.php,服务器获取要求并根据你给它的URL在其磁盘上查找index.php ....然后它将整个php文件解释为html并将html文档传输到浏览器....所以屏幕前面的那个不再是php代码,而是静态HTML文档......
如果你想让页面互动,将javaScript插入你的网页,javascript会以纯文本形式传送到浏览器,它可以在浏览器中运行,而不是在服务器上运行。
所以一个网站同时使用js和php,php用于处理服务器端的工作,比如查询数据库和管理整个网站...... javascript在页面上工作..
所以如果你想以交互方式更改或删除cookie,你需要的是javascript,你可以在javascript中声明一个“logOut()”函数,并用那个控制cookie ....或者如果你真的想要控制使用php的cookie,使用js通过ajax将命令传递给某些php文件,并在php中删除cookie。
答案 2 :(得分:0)
好的,我对这个问题有一个奇怪但有效的解决方案。问题是你不能调用php函数,是的,但你可以通过向表单添加一个值为“whatever”的HIDDEN输入框来调用POST到PHP,然后使用按钮的onclick事件来更改该值像“切”这样的东西。然后在调用POST方法时检查key =“cut”的值。您可能无法使用此过程将值更改回“notCut”,但如果您足够有创意,则可以设置一个定时器,每隔一段时间将值更改回“notCut”...自己测试一下这个效果很好!
<?php
if (array_key_exists('cutter', $_POST)) {
if ($_POST["cutter"] == 'cut') {
setcookie("yourCookie", "cookie", time() - 60 * 60);
echo "You ate the cookie!";
}
}
?>
<form method="post">
<input type="text" id="cutter" name="cutter" value="NOTcut" hidden="true">
<input id='cutter' type="submit" value="Cookie Cutter" onclick="document.getElementById('cutter').value='cut'">
</form>