织梦获得当前的脚本网址GetCurUrl()函数分析

admin2023-01-181025

可以说这个函数在织梦里面是非常重要的,织梦网站网址,例如www.xxx.com/js/21.html像这样的,都可以用这个函数获得,而且,生成网站url也与这个函数的关,在分析这个函数前,我们先了解几个知道点。

我们知道在织梦里面有超全局数组变量$_SERVER,在这个数组里面有我们分析函数需要的三个:

1.$_SERVER["QUERY_STRING"]

说明:查询(query)的字符串

2.$_SERVER["REQUEST_URI"]

说明:访问此页面所需的URI

3.$_SERVER["PHP_SELF"]

说明:当前正在执行脚本的文件名

用一个例子说明这三个值。

举例:www.dedebase.com/demo.php?a=b

$_SERVER["QUERY_STRING"] 指的是:a=b

$_SERVER["REQUEST_URI"] 指的是:/demo.php?a=b

$_SERVER["PHP_SELF"] 指的是:/demo.php

知道这三个东西指的是什么,那么,我们分析这个获取脚本网址的函数就容易多了。

函数源代码:

   function GetCurUrl()
    {
        if(!empty($_SERVER["REQUEST_URI"]))
        {
            $scriptName = $_SERVER["REQUEST_URI"];
            $nowurl = $scriptName;
        }
        else
        {
            $scriptName = $_SERVER["PHP_SELF"];
            if(empty($_SERVER["QUERY_STRING"])) {
                $nowurl = $scriptName;
            }
            else {
                $nowurl = $scriptName."?".$_SERVER["QUERY_STRING"];
            }
        }
        return $nowurl;
    }

如果在demo.php?a=b 里面调用这个函数,显示的将是demo.php?a=b。

这个函数的意思是:若/demo.php?a=b存在,则return $nowurl 也就是/demo.php?a=b。

若/demo.php?a=b不存在,获得demo.php,若存在a=b,则$nowurl=demo.php?a=b。


网友评论