PHP_SELF不等于

时间:2015-03-19 09:18:03

标签: php include superglobals

我正在尝试为我的网站编写侧边栏代码。为此,我存储了与文件中链接相对应的值对,比如names.txt:

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']);

1 个答案:

答案 0 :(得分: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];