0

我有一系列 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/。我不确定是否有另一种将 $_SERVER 与 PHP 一起使用的方法,但似乎有一种更有效和可重用的方式来编写它。想法?

4

4 回答 4

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;
}
于 2012-06-29T16:03:25.537 回答
0

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

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

于 2012-06-29T16:03:31.700 回答
0

试试这个

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

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

于 2012-06-29T16:04:21.633 回答
0

你可以试试:

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

或者

$current_filename = basename($_SERVER['REQUEST_URI']) .'php';
于 2012-06-29T16:06:58.883 回答