绝望地希望有人可以帮助解决这个问题。我是php的新手。我尝试通过教程自我教导,我搜索得很高,但无济于事。
基本上我想要实现一个“if index.php页面,显示foo
,如果不是在index.php页面上,请显示bar
”
有什么想法吗?
我希望我能够解释得这么好......
index.php包含一个侧栏:
require_once('./cache/templates/sidebar.php');
构建的每个后续页面都使用此index.php文件中定义的内容,这意味着sidebar.php是必须的。
我想编辑sidebar.php以包含仅在索引页面上显示的广告。
目前,当我编辑sidebar.php时,例如,显示字母“B”,它将显示在主页上,而其他所有页面都会显示;
索引页:http://img.photobucket.com/albums/v684/nilsatis/1stack.jpg
每隔一页:http://img.photobucket.com/albums/v684/nilsatis/2stack.jpg
如何指示包含文件的一个区域显示在一个页面上,但不包括在其他页面上显示?
非常感谢任何帮助。
[编辑]这是有问题的网站:www.grandoldteam.com。你可以看到我在哪里有“测试”文本 - 这是在sidebar.php中输入的。我希望这篇文章(未来的广告)只在索引页面上展示,而不是其他地方。
[编辑2]这是在index.php文件中调用sidebar.php的点;
<p class="page_desc">'.$PAGE['subtitle'].'</p>
' );
}
if (isset($url[1])) require_once('./cache/html/'.$url[0].'/'.$url[1].'.php');
else require_once('./cache/html/'.$url[0].'.php');
}
}
require_once('./cache/templates/sidebar.php');
}
require_once('./cache/templates/footer.php');
这就是我可以编辑sidebar.php来显示想要的文字;
<div class="clear"></div>
test
</div>
<p>
</div>
答案 0 :(得分:8)
要按照您想要的方式进行操作,请使用$_SERVER超全局。脚本的名称可以在多个地方找到。
if (strpos($_SERVER['SCRIPT_NAME'], 'index.php') !== false) // index page...
另一种选择是让index.php在包含侧栏之前设置一些变量,如$ show_ad,侧栏栏可以检查该变量。
答案 1 :(得分:2)
我不建议检索调用者脚本的名称,因为几个页面在不同的文件夹中可以具有相同的名称,也因为您可能希望将来更改页面名称。
使用全局变量或常量来说明哪个页面是调用者。
的index.php:
<?php
$GLOBALS['caller_page'] = 'index';
require_once('./cache/templates/sidebar.php');
...
的sidebar.php:
<?php
...
if ( isset($GLOBALS['caller_page']) && ($GLOBALS['caller_page']=='index') ) {
... // special action for the index page
}
...
答案 2 :(得分:1)
试试这个,
在页面上创建一个只想显示“foo”的会话。
然后这样做
if ($_SESSION['valid']) {
//if the session is present, then show
}
else {
//if not,
}
如果您的文件名发生变化,这不仅是一种更好的方式吗?这种方式无关紧要,因为它正在检查会话,而不是可能发生变化的事情:)
答案 3 :(得分:0)
如何解决这个问题:
在顶部sidebar.php,添加以下行:
print_r($_SERVER);
这将显示$ _SERVER变量的完整内容。从那时起,你应该看到一些可以使用的候选者,以及其他可能对你有用的东西。
一旦决定使用什么,您需要检查它是否包含字符串index.php
。这样做的好方法是使用:
if (strpos($_SERVER['SCRIPT_NAME'], 'index.php') !== false) {
}
这个惯用的行检查脚本名称中字符串index.php的位置是否为false,即它是一个值。
答案 4 :(得分:0)
测试值
$_SERVER[ 'REQUEST_URI' ]
反对文字
'/ index.php的'。
如果它是相同的。 index.php正在执行。
答案 5 :(得分:0)
所有这些答案都很棒,但我提供了不同的练习。它不是更好,但在我看来它更舒服。
当你这样做时:
require_once('./cache/templates/sidebar.php');
在index.php上,改为:
require_once('./cache/templates/sidebar.php?ad=1');
现在,在sidebar.php上,添加:
if(isset($_GET['ad'])&& $_GET['ad']=='1')
// display ad
else
//don't display ad
编辑:
你想要工作代码,很好......
假设您的广告实际上是stackoverflow徽标的图片:
现在在sidebar.php上你会有类似的事情:
<?php
....
if(isset($_GET['ad'])&& $_GET['ad']=='1')
{
?>
<div>
<a href="http://stackoverflow.com">
<img src="http://blog.vicompany.nl/wp-content/uploads/2011/04/stackoverflow-logo-250.png" alt="ad"/>
</a>
</div>
<?php
}
else
{
}
....
?>