1

我已经搜索了一天来找到解决方案,但是还没有运气,我有一个名为的函数: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.phpindex.php(位于根目录中),所以我有:

在 index.php 中:

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

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

问题是...

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

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

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

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

任何帮助将非常感激。

4

2 回答 2

0

这可能是变量范围的问题。尝试使用

$GLOBALS['available']

代替

$available

在你的 client.php 中。因此它将在全局范围内定义。在定义部分还有:

$GLOBALS['available'] = "false"; and $GLOBALS['available'] = "true";
于 2013-07-28T13:07:51.587 回答
0

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

于 2013-07-28T13:51:29.377 回答