如果是index.php,则显示“this”,如果没有,则显示“this”

时间:2011-04-22 13:17:10

标签: php

绝望地希望有人可以帮助解决这个问题。我是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>

6 个答案:

答案 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
{
}

....
?>