我已经搜索了一天找到解决方案,但是没有运气,
我有一个名为online()
的函数,这个函数位于名为client.php
的文件中,该文件位于root / dir / includes / 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';
}
}
?>
首先建立数据库连接,然后检查用户是否可用,如果是,则$available = "true";
其他:
$available = "false";
然后我将client.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。
非常感谢任何帮助。
答案 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";
也遇到了这样的问题,但是修复了它。