2015-06-05 14 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

相关问题