2012-06-29 104 views
0

我有一系列的PHP頁面,我想使用條件邏輯在每個頁面上應用不同的規則。我不確定我的方法是否是最好的方法,所以我想看看社區是否有任何建議,因爲這不是最好的方法。下面的代碼:使用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的方式,但它似乎有可能是一個更有效和可重用的方式來寫這個。思考?

回答

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

這工作好了,謝謝! – JCHASE11

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

+0

使用案例的好處,謝謝 – JCHASE11

0

你可以嘗試:

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

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