我有一个网站,使用JQUERY在DIV容器内动态加载页面。
$("div#container div.content div.main").load(siteLink+"/"+newloadVal);
它的效果很好,但是,我正在寻找一种方法来阻止访问者通过他们的实际网络链接访问这些包含的页面,例如site.com/pagelink.php。
我的主要问题是,有没有办法做类似的PHP定义(“THROUGHJS,true);使用Javascript,所以如果访问者通过其实际链接访问包含的页面,它将重定向到错误页面?” / p>
有没有一种简单的方法可以做到这一点,主要是通过JUST PHP?
我没有尝试过,但这是可能的:
在父页面中,有DEFINE(“mainpage”,true),
然后在动态加载的页面中,有:
if(defined("mainpage")){
...}
else { exit; } // Show an error?\
我不确定这是否可行,因为动态页面没有通过PHP加载,因此父页面中定义的函数不会“存在”到动态页面?
提前感谢您的帮助。 (对不起,如果这看起来有点令人困惑):P
答案 0 :(得分:1)
可能的半解决方案:
为用户的会话生成唯一密钥,并将其传递给对其他页面的所有请求
对于通过jquery的附加页面的每个请求,将此键包含为查询参数(或作为发布数据)。加载所需页面后,检查密钥是否与用户的会话匹配。如果没有,则显示错误
像这样:
$("...").load(siteLink + "/" + newloadVal + "?key=<?php echo $session_key ?>");
这实际上不会阻止用户直接访问您的网页,但会要求他们知道有效密钥。为此,(普通用户)必须访问主页面,查看源代码,找到密钥等。
答案 1 :(得分:0)
编辑:我最终得到了一个AJAX请求,这样我就可以使用请求标头来确定页面是否使用AJAX加载。
感谢所有帮助人员:)