2015-06-05 18 views
0

我想在某個文件(這是一個「新窗口」)的開頭包含一個小的PHP代碼,這會阻止用戶直接訪問該文件,如果他直接將URL輸入到他的瀏覽器中的話。如何防止訪問「子窗口」,如果用戶沒有在父窗口上做出選擇

換句話說,我的網站的功能是,首先用戶必須在父窗口上進行無線電選擇,然後單擊「提交」,這會打開一個新的「子」窗口。

但是,首先用戶必須登錄!

爲了防止打開的窗口中,我寫了這個代碼在PHP文件的最開始(在父和子窗口):

<?php session_start(); 

if (!(isset($_SESSION['login']) && $_SESSION['login'] != '')) { 

     header ("Location: www.example.com/access_denied.php"); 

exit() ; 

如果用戶沒有登錄,和他試圖直接訪問特定的URL,他被重定向到顯示「ACCESS DENIED」文本的文件。

但是,對於這種特殊情況(如上所述),用戶首先需要在父頁面上進行選擇。

如果他不選擇父頁面上的任何東西,只要輸入的URL,在他的瀏覽器中的「子窗口」,他仍然能夠直接訪問PHP文件(我不希望)

父頁上的無線電選擇如下:

if(isset($_POST['submit']) { 

$_SESSION['response'] = $_POST['selection']; 

在child_window,我添加以下代碼:

if (!(isset($_SESSION['login']) && $_SESSION['login'] != '') ||  
(isset($_SESSION['login']) && (!(isset($_POST['selection'])))  { 

header ("Location: www.example.com/access_denied.php"); 

含義:即使用戶是logge d在..........除非他已經在父頁面上做出選擇,否則他不能訪問子窗口。

但是,此代碼不起作用。

我甚至試圖在父頁面上創建一個隨機的「$ _SESSION」變量,一旦進行了無線電選擇,它就會被激活.............並且,在子窗口上,我寫了一個代碼,說:如果這個隨機的$ _SESSION沒有被設置,子窗口會給出一個「訪問被拒絕的」消息。

不過,這是行不通的。用戶仍然可以通過輸入直接URL來查看和訪問子窗口。

任何幫助,將不勝感激。

感謝

回答

0

在child_window你調用這個

(isset($_SESSION['login']) && (!(isset($_POST['selection'])))  { 

調用此

(isset($_SESSION['login']) && (!(isset($_SESSION['response'])))  { 

你應該叫您在會話設置的父窗口的標籤

+0

謝謝,Nemanja。但是,它沒有工作:(我也叫這個標籤 – phpnewbie2015

相關問題