2012-05-15 62 views
0

我在PHP中有一个小应用程序,当点击一个按钮(type='button'而不是type='submit')时,会打开一个新窗口并将一个页面加载到该窗口中。使用Ajax在窗口上的该页面上执行对数据库的一些插入操作。一个页面只能在一个窗口中打开

加载到窗口中的页面只能在窗口中打开。如果该页面的URL直接输入到Web浏览器的地址栏中,则页面必须受到保护并重定向到其他页面,该页面可能是应用程序的主页。我尝试使用window.opener.closed,但它不符合此要求。

在PHP中,我可以检查

if($_SERVER['REQUEST_METHOD'] == "GET") 
{ 
    header("location:Home.php"); 
} 

但是,这也将在窗口,因为我使用的是页面上的GET请求重定向的Ajax网页的页面Home.php。

有没有办法确定一个页面是否只能加载到一个窗口中?在任何情况下,都必须防止加载。

谢谢。

+0

这不能在PHP方面完成.. PHP无法知道是否有'window.opener'可用。如果'window.opener'可用,你可以打开新窗口,然后用JS加载页面。否则重定向,但是你不能在服务器端做到这一点。 –

+0

不要这样做。谁会使用你的页面 - 他不会那样。 – YMMD

回答

0

你检查,如果你开了,在定期的浏览器地址栏中保护ADRESS开门红属性设置?如果没有,那么你可以检查它加载的窗口,并退出每当这个值是未设置

+0

我认为这是一个可接受的检查,因为在你自己的应用程序中,你可以决定是否可以在window.open – Sebas

+1

可编辑的地址栏我做了使用jQuery函数,就像这样'jQuery(document).ready(function() { \t \t如果(window.opener == NULL) \t \t { \t \t \t了window.location = “的index.php”; \t \t } \t });'。可能在概念上是错误的,但它有效。非常感谢你。 – Tiny

0

你可以通过使用$ _GET到弹出一个密钥。如果密钥无效,您将执行远离页面的重定向。这意味着直接访问页面的用户不知道密钥。

还记得在你的标题重定向之后放置一个退出,否则脚本可能会继续处理!

相关问题