如何构建一个条件包含将根据当前页面运行代码?

时间:2014-06-07 15:59:29

标签: php

我的网站上有两种类型的标题,因此我不想为每种类型的标题创建2个包含文件,而是创建一个包含if / else语句的包含文件,该文件将为每个标题显示正确的标题类型页。

以下是" testpage.php"的代码:

<?php
  $testpage="testpage.php";
  $currentpage = $_SERVER['SCRIPT_FILENAME'];
?>

<!DOCTYPE html>
<html>
  <head>
    <title>testpage</title>
  </head>
  <body>
    <?php include_once('include/header.php'); ?>
  </body>
</html>

以下是包含文件的代码&#34; header.php&#34;:

<?php 
  if($currentpage==$testpage) {?>
    <p>Woaw!!! You are a genius. you should work for NASA</p>
  <?php }else{ ?>
    <p>this doesn't seem to work. Try something else.</p>
  <?php } 
?>

到目前为止,我已经尝试过这个:

    $currentpage = $_SERVER['SCRIPT_FILENAME'];
    $currentpage = $_SERVER['PHP_SELF'];
    $currentpage = $_SERVER['REQUEST_URI'];
    $currentpage = __FILE__;

我已尝试过我的XAMPP本地服务器,以及我的&#34; bluehost&#34;直播服务器,我只是不能让它工作。 另外,我在github上创建了一个小测试来测试,所以如果你想,你可以看看,这里是链接:https://github.com/nobody7/test001

所以,如果您有任何建议,请告诉我们,我们将非常感谢您的帮助。

由于

1 个答案:

答案 0 :(得分:0)

来自http://www.php.net/manual/en/reserved.variables.server.php

$_SERVER['REQUEST_URI']是用户输入地址栏的网址减去主机名和协议(例如对http://example.com/my/web/site/123的请求,将返回/my/web/site/123),通常是人们用于在使用Front Controller时区分不同页面,因为前端控制器意味着所有请求首先通过单个PHP脚本。

$_SERVER['PHP_SELF']$_SERVER['SCRIPT_FILENAME']会显示您执行的 initial 脚本的文件名,它们几乎是一样的。因此,如果您向http://example.com/abc.php发出了请求,那么这2个变量会将文件路径返回到abc.php(例如/var/www/abc.php),即使您在包含的文件中执行此操作,它也会显示文件路径foe { {1}}。

abc.php将显示您所在的当前文件,这与上面的类似,但它将显示您当前所在文件的文件路径,即使是包含的文件也是如此。因此,如果您在__FILE__内添加了header.php,并且在abc.php内使用了__FILE__,则会将文件路径返回到header.php。这可能不是你所需要的。

你的尝试几乎就在那里,但因为header.php返回文件的完整路径,你需要以某种方式只得到它的文件名部分,幸运的是有一个内置函数已经{{3} }。因此,您只需要更改一些代码:

$_SERVER['SCRIPT_FILENAME']