我想要创建一个注销/退出链接,从‘成员仅’的地区,我的网站。因此,我为此创建了一个logout.php脚本,登录链接将导航到该脚本,然后使用头文件重定向到index.php。我的问题是,如何通过输入logout.php来防止用户导航到脚本?
在任何情况下,你如何防止这种情况发生?
为求澄清:
我希望用户只使用注销链接,即点击它,而不是通过输入注销脚本的URL地址。
logout.php如下:
<?php
session_start();
if (isset($_SESSION['user'])){
unset($_SESSION);
session_destroy();
header ('location: index.php');
}
?>发布于 2013-08-31 07:06:40
您可以通过将logout.php设置为POST页面而不是普通GET来阻止这种情况。其中一种方法是将您的注销链接更改为实际提交一个表单,而不仅仅是一个普通的链接。然后,在注销页面上,在注销之前检查表单是否真正提交。这意味着只要输入URL就不会被注销,而用户点击链接就会被注销。
这方面的一个例子是使您的HTML类似
<form action="logout.php" method="post" name="logoutform">
<input type="hidden" name="logout" value="y">
<a href="javascript:document.forms['logoutform'].submit()">Log Out</a>
</form>您可能需要额外的CSS来删除表单样式。
logout.php中的代码可以是:
<?php
if ($_POST["logout"] == "y") {
/* Getting here means they clicked the link, so log them out */
}
?>您不能阻止它们在浏览器中键入logout.php,但这将确保它们只有在提交表单时才实际注销(即单击注销链接)。只要输入URL就会得到一个空白页。
发布于 2013-08-31 07:04:41
我希望用户只使用注销链接进行注销,而不是输入注销脚本的url地址。
不可能避免访问者在浏览器中更改地址栏URL。没有真正的方法来确定用户是如何访问logout.php的--通过直接输入网址或从网站上的页面输入URL。
我认为您是从错误的角度来处理这个问题,但是如果您真的想这样做,我建议您使用会话变量。
https://stackoverflow.com/questions/18545352
复制相似问题