2012-05-15 93 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到彈出一個密鑰。如果密鑰無效,您將執行遠離頁面的重定向。這意味着直接訪問頁面的用戶不知道密鑰。

還記得在你的標題重定向之後放置一個退出,否則腳本可能會繼續處理!

相關問題