织梦获得当前的脚本网址GetCurUrl()函数分析
可以说这个函数在织梦里面是非常重要的,织梦网站网址,例如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。