繁体   English   中英

防止直接访问URL

[英]Prevent direct access to url

我知道这个问题已经被问过几次了,但我仍然迷路!

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

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

另一种解决方案是单击login时执行一个http post variable 如果变量存在(通过主页访问),则应加载登录页面,否则应将用户重定向到主页(如果直接输入登录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?

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

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

在javascript中,可以通过document.referer访问http Referer。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM