2015-03-19 71 views
-1

我正在嘗試爲我的網站編寫側邊欄。對於這一點,我儲存對對應於文件中的鏈接值,說names.txt中:PHP_SELF不等於

Home-index.php 
Coding-coding.php 

和我的PHP文件,然後將這些值並把它們變成對的側連桿,即

<a href = "index.php">Home</a> 
<a href = "coding.php">Coding</a> 

等等。現在,我想讓它對於我所在的頁面而言,而不是顯示超鏈接,它將顯示文本的大膽版本。 即,如果我是的index.php,它輸出

<strong>Home</strong> 
<a href = "coding.php">Coding</a> 

要做到這一點,我使用explode從文件分割我的琴絃,然後PHP_SELF檢測是否是同一個頁面。

最重要的是,由於腳本將在不同的頁面,我把它放到一個文件(side.php)中,然後使用include('side.php')。在side.php裏面有側邊欄功能,它將頁面目錄(通過PHP_SELF)作爲參數。除了粗體文本外,其他所有工作都可以正常工作。幫幫我?

P.S.當我說PHP_SELF我的意思是$_SERVER['PHP_SELF']

謝謝!

(我的代碼,或其一部分...)

在side.php:

<?php 
    function sidebar($input){ 
     # echo ($input); 
     $sitenav = fopen("file","r"); 
     $amts=0; 
     do{ 
      $sidebarvals[$amts]=fgets($sitenav); 
      $amts=$amts+1; 
     }while ($sidebarvals[$amts-1]!="EOF"); 
     $amts--; 
     for ($i=0;$i<$amts;$i++){ 
      $parts = explode("-",$sidebarvals[$i]); 
      if ("/" . $parts[1]!=$input){ 
       echo "<a href=" . $parts[1] .">" . $parts[0] . "</a>"; 
      }else{ 
       echo "<strong>" . $parts[0] . "</strong>"; 
      } 
      echo "<br>"; 
     } 
     fclose($sitenav); 
    } 
?> 

,並在每一頁上:

include ('side.php'); sidebar($_SERVER['PHP_SELF']); 
+0

您應該發佈您正在使用的代碼。這個問題可能是'$ _SERVER ['PHP_SELF']'開始處的反斜線。 – jeroen 2015-03-19 09:21:00

+0

那麼,我試圖用「/」來連接字符串。 $ namefromfile – Thornkey 2015-03-19 09:23:28

+0

然後我會放我的代碼。 – Thornkey 2015-03-19 09:23:37

回答

0

我所知PHP_SELF返回文件名完整的文件路徑爲index.php將返回/index.php。但看起來你正試圖匹配index.php和返回的值/index.php。 因此,爲了更正您必須從PHP_SELF獲取文件名,並且可以通過這種方式來實現。

$url_array = explode('/',$_SERVER['PHP_SELF']); 
$last = count($url_array) - 1; 
$file = url_array[$last]; 
+0

謝謝。我試圖通過在字符串的另一部分附加「/」來完成。爲什麼這不起作用? – Thornkey 2015-03-19 09:39:02