好的,所以内容页面使用了这个:
$tab = "Friends";
$title = "User Profile";
include '(the header file, with nav)';
标题页面的代码为:
if ($tab == "Friends") {
echo '<li id="current">';
} else {
echo '<li>';
}
问题是,if $tab == Friends
条件从未被激活,并且没有其他变量从内容页面传送到标题页。
有谁知道我做错了什么?
更新:
好吧,当我使用../scripts/filename.php
时,问题似乎消失了,只有当我使用完整的URL时才会出现问题?
任何想法为什么?
答案 0 :(得分:2)
当您include
完整网址时,您不包含PHP脚本 - 您将包含其生成的HTML。就像你去http://wherever.your.url.goes
一样,但它是由服务器而不是浏览器完成的。该脚本在一个完全独立的进程中运行,由服务器自身的单独请求引起,并且两者之间没有共享$variable
。
简短版本:当您加入http://wherever.your.url.goes
时,$tab
将始终为空。如果包含实际文件名,则将共享该变量。
答案 1 :(得分:1)
您发布的代码应该有效。你是如何实际包含该文件的?这是否发生在函数内?然后你需要使用global
语句才能工作。例如:
文件1:
function my_include($file) {
global $tab; // <-- add this
include '/some/path/' . $file;
}
$tab = 'Friends';
my_inlcude('file_2.php');
文件2:
if ($tab == 'Friends') { ... }
答案 2 :(得分:1)
现在你明白为什么发布一些存根和字符而不是真实代码
试着想一想,你的问题不是火箭科学。包含就像复制粘贴代码代替包含运算符。在浏览器中加载您的包含的URL,复制生成的代码并将其粘贴到您的第一个文件中并查看。