php全局变量在包含的文件中不起作用

时间:2013-07-28 12:50:59

标签: php global-variables php-include

我已经搜索了一天找到解决方案,但是没有运气, 我有一个名为online()的函数,这个函数位于名为client.php的文件中,该文件位于root / dir / includes / client.php中:

在client.php中:

// db connection
include "base.php";

// check if availabe
$available = "false";
$check = mysql_query("SELECT available FROM users ");
while ($row=mysql_fetch_array($check)) {
    if($row['available'] == "yes") {
        $available = "true";
    }
}
// get config
$fetch = mysql_query("SELECT * FROM config ");
$config = mysql_fetch_array($fetch);

// functions
function online() {
// globals
global $available,$config,$path;

// build box

    if($available == "true") {
        ?>
        <div id="online">

        <?
    } else {
            ?><div id="offline"> <?
        }
echo 'client.php is included';
}
}

?>

关于client.php:

首先建立数据库连接,然后检查用户是否可用,如果是,则$available = "true"; 其他: $available = "false";

然后我将client.php包含在index.php(位于根目录中),我有:

index.php中的

$path = "dir/";
include $path . "includes/client.php";

到目前为止一切顺利,一切正常,

问题是......

我也需要在子目录的其他页面中使用此功能,更具体一点,我试图将此功能添加到我的wordpress网站,该网站位于:root / wp 在我的wordpress标题中,我包括client.php

include "../dir/includes/client.php";

我得到输出,所以我确定它被包含在内,但是,当我打开我的wordpress(root / wp)时,我的全局变量都没有工作,导致$available = null,而它是预期的在"false"

中定义为client.php

令人困惑的是,当我在我的wordpress标题中回显$ available时,我可以获得该值,但是当我在client.php内回显它时它再次为null,所以如果我在wordpress标题和{ {1}},当我打开wordpress页面时,我可以看到我在标题中包含的那个,而client.php中的另一个是null。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

这可能是variable scope的问题。尝试使用

$GLOBALS['available']

而不是

$available

在你的client.php中。所以它将在全球范围内定义。 在定义部分还:

$GLOBALS['available'] = "false"; and $GLOBALS['available'] = "true";

答案 1 :(得分:0)

您的问题可能是您的包含文件中的链接引用。你可以尝试: include "/rootfolder/dir/includes/client.php";而不是包含"../dir/includes/client.php";也遇到了这样的问题,但是修复了它。