使用PHP识别当前页面

时间:2012-06-29 15:58:08

标签: php url conditional

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

<?php

     $nameurl = $_SERVER["REQUEST_URI"];

     if ($nameurl == "/fs/about.php"){
         echo "about page";
     }

     elseif ($nameurl == "/fs/index.php"){
         echo "home page";
     }
?>

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

4 个答案:

答案 0 :(得分:0)

您可以使用

// 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;
}

答案 1 :(得分:0)

要保存几行代码,您可以使用开关替换多个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

答案 2 :(得分:0)

试试这个

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

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

答案 3 :(得分:0)

你可以尝试:

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

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