1

我想从我网站的“仅限会员”区域创建注销/退出链接。因此,我logout.php为此创建了一个脚本,注销链接将导航到该脚本,然后我使用标题重定向到index.php. 我的问题是如何防止用户logout.php通过简单地输入 URL 来导航到脚本?

在任何情况下,您如何防止这种情况发生?

为了澄清:

我希望用户仅使用注销链接注销,即单击它;而不是通过输入注销脚本的 URL 地址。

logout.php如下:

<?php
session_start();
if (isset($_SESSION['user'])){
    unset($_SESSION);
    session_destroy();
    header ('location: index.php');
}

?>
4

2 回答 2

0

我希望用户仅使用登出链接登出;不是通过输入注销脚本的 url 地址。

确实不可能避免访问者更改浏览器中的地址栏 URL。没有真正的方法可以确定用户是如何访问的logout.php——通过直接输入 URL 或从您网站上的页面输入。

我认为您从错误的角度处理问题,但是如果您真的想这样做,我建议您使用session variable

于 2013-08-31T07:04:41.120 回答
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,但这将确保他们只会在提交表单时才真正注销(即单击注销链接)。只需输入 URL 就会得到一个空白页面。

于 2013-08-31T07:06:40.567 回答