2011-07-22 152 views
2

我一直在使用jQuery UI Tab组件,并已成功实现通过ajax为每个选项卡加载内容。每个选项卡使用一个get变量调用一个常见的php页面,然后由该常用页面进行分析以识别和回显页面内容。隐藏jQueryUI选项卡内容

我面对的问题是阻止用户直接链接到这个常见的PHP页面,这会将页面内容加载到空白浏览器窗口中...在选项卡外部。我试图检测$ _SERVER [“HTTP_REFERER”]以仅从远程站点加载内容,但这有几个缺点,即后退按钮和本地页面链接。必须有一个更清洁的方式。

希望我缺少一些简单的东西,但我怎么能强迫Ajax内容在给定页面上的标签中查看,而不是回避标签?

感谢

回答

2

您将无法阻止它的100%的时间,但你可以阻止大多数人从非Ajax访问:

if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
    // it's an ajax request 
} 

请记住,头部能很容易被欺骗,所以这绝不是安全的,但它会照顾大多数请求就好了。

+0

我不担心欺骗,只是普通的日常访问者。然而,经过进一步测试,似乎Win7上的IE9不会传递此标头,而Mac和Windows下的所有其他浏览器都会传送它。哦,另一个IE解决方法......回到绘图板。 – Kristofer

+0

IE解决方法有时是一种不幸的生活方式:)你可以在查询字符串上传递一些东西,比如'?ajax = 1'。不是最漂亮的解决方案,但它可能足以满足你正在做的事情。 – webbiedave

相关问题