我想从我网站的“仅限会员”区域创建退出/退出链接。所以我为此创建了一个logout.php
脚本,退出链接将导航到然后我使用标头重定向到index.php
。我的问题是如何通过只输入URL来阻止用户导航到logout.php
脚本?
对于任何实例,你如何防止这种情况发生?
澄清:
我希望用户只能使用退出链接注销,即点击它;不要输入注销脚本的URL地址。
logout.php
如下:
<?php
session_start();
if (isset($_SESSION['user'])){
unset($_SESSION);
session_destroy();
header ('location: index.php');
}
?>
答案 0 :(得分:0)
我希望用户仅使用注销链接注销;不要输入注销脚本的url地址。
实际上无法避免访问者更改他们的浏览器中的地址栏网址。没有真正的方法可以确定用户访问logout.php
的方式 - 直接输入网址或从网站上的网页输入。
我认为你从错误的角度来看待这个问题,但是如果你真的想要这样做,我建议使用session variable。
答案 1 :(得分:0)
你可以通过使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,但这将确保他们只在提交表单时实际注销(即单击注销链接)。只需输入网址即可获得空白页。