如何防止网站上的管理页面的网址导航

时间:2013-08-31 06:41:16

标签: php html

我想从我网站的“仅限会员”区域创建退出/退出链接。所以我为此创建了一个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');
}

?>

2 个答案:

答案 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,但这将确保他们只在提交表单时实际注销(即单击注销链接)。只需输入网址即可获得空白页。