$ _GET []在包含文件中不起作用?

时间:2014-05-28 13:37:27

标签: php scope superglobals

我有一个网页,其中包含要显示的页面编号:

mydomain.net/index.php?page=42

这没关系。现在我只想在设置特定cookie时显示页面,并且我将大部分主体移动到包含文件,因此index.php只有

<?php 
    if ($cookie_ok):
        include("http://mydomain.net/index_d6skrif9.php"); 
    else:
        include("http://mydomain.net/noaccess.inc"); 
    endif 
?>

现在包含文件中的$_GET["page"],它应该检索页码而不返回任何内容。

我读到$_GET[]是一个超级全球和超级全球&#39;范围跨包含文件。那么这里有什么问题,我怎样才能在包含文件中使用页码?

2 个答案:

答案 0 :(得分:3)

$_GET适用于所包含的文件,但它无法在包含的HTTP资源中使用。

index_d6skrif9.php中的PHP将由mydomain.net执行,然后才会进入带有include语句的PHP程序。

使用本地文件路径,而不是HTTP URL。

include("index_d6skrif9.php"); 

或者,将值传递给您从中提取包含的服务器:

include("http://mydomain.net/index_d6skrif9.php?page=" + urlencode($_GET['page'])); 

请注意,后一种方法存在更多出错的机会,并且效率远低于所包含的本地文件,因此如果您能提供帮助,则不建议这样做。

答案 1 :(得分:0)

您需要在本地包含它们,而不是通过网络:

if ($cookie_ok) 
    include("index_d6skrif9.php"); 
else
    include("noaccess.inc"); 
endif 

通过使用URL,您可以发出Web请求,服务器在文件中执行PHP并返回内容(使其拥有自己的超级全局集)。