防止直接访问url

时间:2014-04-13 13:02:21

标签: php apache .htaccess iis redirect

我知道这个问题已被多次询问但我仍然迷路了!

我有一个在Apache服务器内部托管的网站项目(php)。该网站加载主页。主页包含login链接。当用户点击login时,会在IIS中另一台服务器(外包)上托管的单独选项卡中打开.htm页面。我想阻止用户直接在地址栏中输入login页面的网址。相反,用户应始终通过项目主页导航到login页面。

我理解的唯一工作是通过htaccess文件。当页面位于同一服务器上时,此方法有效。但是,在IIS上没有htaccess文件。

另一个解决方案是在点击http post variable时执行login。如果变量存在(通过主页访问),则应加载登录页面,否则应将用户重定向到主页(如果直接输入登录URL)。但是,我能够发布一个变量,但我不知道在哪里调用加载适当的页面。以下用于发布变量:

<ul>
<li><form id="loginForm" name="loginForm" method="post" action="redirectTest.php">
<input type="hidden" name="total" id="total" value="">
<a href="#" onclick="setValue();">Login</a>
</form></li>

<script type="text/javascript">
function setValue(){
    document.sampleForm.total.value = 100;
    document.forms["loginForm"].submit();
}
</script>

redirectTest.php目前为空,因为我不确定如何重定向。

编辑:例如,我的网站是www.abc.com,登录页面是www.xyz.com/login.htm。如何识别是通过www.abc.com路由还是直接输入地址栏的URL?

1 个答案:

答案 0 :(得分:0)

在登录页面上,您可以使用变量$_SERVER['HTTP_REFERER']。这将包含您单击链接的页面的名称。然后,您可以在if语句中使用它,如下所示:

if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] == "http://domain.com/page_with_login_link.php")

在javascript中,可以通过document.referer

访问http引用者