使用 PHP 标识当前页面


Using PHP to identify current page

我有一系列PHP页面,我想使用条件逻辑对每个页面应用不同的规则。我不确定我的方法是否是最好的方法,所以我想看看社区是否有任何建议,因为这感觉不是最好的方法。代码如下:

<?php
     $nameurl = $_SERVER["REQUEST_URI"];
     if ($nameurl == "/fs/about.php"){
         echo "about page";
     }
     elseif ($nameurl == "/fs/index.php"){
         echo "home page";
     }
?>

理想情况下,我只想使用文件名(索引.php或大约.php)而不是/fs/。我不确定是否有另一种方法可以在 PHP 中使用 $_SERVER,但似乎可能有更有效和可重用的方法来编写它。思潮?

您可以使用

// get script name
$script     = explode('/', $_SERVER['PHP_SELF']);
$scriptname = $script[count($script) - 1];
switch ($scriptname) {
    case "index.php":
        // Something you only want to show on this page
    break;
    case "about.php":
        // Something you only want to show on this page
    break;
}

为了节省几行代码,你可以用开关替换多个ifs:

http://php.net/manual/en/control-structures.switch.php

$nameurl = $_SERVER["REQUEST_URI"];
switch ($nameurl) {
    case "/fs/about.php":
        echo "about page";
        break;
    case "/fs/index.php":
        echo "home page";
        break;
    default:
        echo "unknown page";
        break;
}

使将来添加新案例变得更加容易,但它本质上是在做同样的事情......

也许有办法让它更加优化,但我认为如果你开始做得太多,你就失去了轻松理解代码中发生的事情的能力,所以除非你评论你在做什么,否则未来看着你的工作的人会诅咒你。 :P

试试这个

$nameurl = basename($_SERVER['REQUEST_URI'], '.php');
echo $nameurl, " page";

http://php.net/manual/en/function.basename.php

你可以试试:

$currentFile = $_SERVER["PHP_SELF"];
$current_filename = explode('/', $currentFile);

$current_filename = basename($_SERVER['REQUEST_URI']) .'php';