2012-01-04 143 views
0

我有一个三层树显示页面上的内容。它使用includes来显示基于URL的特定PHP页面。不会发生的是变量在包含的PHP文件中不被理解。难以传递变量通过包括使用全局变量

的index.php

// example url http://fakesite.com/?color=red&user=999 
$user = $_GET['user']; 

if ($_GET['color'] == 'red')   
     {$color = 'red';} 
elseif ($_GET['color'] == 'white')  
     {$color = 'white';} 
else 
     {$color = 'blue';} 

global $color; 
global $user; 
include 'page2.php'; 

使page2.php

global $color; 
global $user; 
echo 'hi '.$user.'I hear you like '.$color; 
+0

我注意到你已经使用'include_once()的'。你有没有在代码的早些时候在其他地方加入'page2.php'? – 2012-01-04 05:31:08

+0

@迈克尔没有,我改变它以防止更多的混淆。 – Tiny 2012-01-04 05:34:20

回答

3

没有必要在所有的这些$global线。在主脚本中定义的任何变量都在include d文件中定义。这基本上就像把代码中include d文件,并在include调用的地方顺手把它(只有少数例外)

+0

还没有任何通过。 – Tiny 2012-01-04 05:35:19

0

这条线:

include_once 'page2.php; 

应更改为:

include_once 'page2.php'; 

你有一个缺少的报价。

0

你有没有尝试删除所有这四个全局线?我不知道这是否是问题,但他们根本没有必要!

当包含或需要文件时,上面声明的所有变量都可用于包含的/必需的文件。

如果这没有解决它,也许你有包括错误的路径。

+0

包含作品。 page2只是无法识别索引中的变量。 – Tiny 2012-01-04 06:29:30

0

的index.php

<?php 
    $user = $_GET['user']; 

    if ($_GET['color'] == 'red')   
      {$color = 'red';} 
    elseif ($_GET['color'] == 'white')  
      {$color = 'white';} 
    else 
      {$color = 'blue';} 
    include 'page2.php'; 
?> 

使page2.php

<?php 
    echo 'hi '.$user.'I hear you like '.$color; 
?> 

全球例如

function dosomethingfunky(){ 
    global $user, $color; 
    echo 'hi '.$user.'I hear you like '.$color; 
}