存档

文章标签 ‘URL’

PHP获取当前页面url

2011年2月23日 admin 没有评论
1
2
3
4
5
6
7
8
9
function get_url() { 
	if (!isset($_SERVER['REQUEST_URI'])) {  
		$url = $_SERVER['REQUEST_URI'];      
		}else{ 
			$url = $_SERVER['SCRIPT_NAME'];     
			$url .= (!empty($_SERVER['QUERY_STRING'])) ? '?' . $_SERVER['QUERY_STRING'] : '';           
			}    
			return $url;
	}

此函数返回正在执行的文件名信息。
当前 url:”http://”.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']

获取URL相关的服务器环境变量:
1,$_SERVER["QUERY_STRING"]
说明:查询(query)的字符串

2,$_SERVER["REQUEST_URI"]
说明:访问此页面所需的URI

3,$_SERVER["SCRIPT_NAME"]
说明:包含当前脚本的路径

4,$_SERVER["PHP_SELF"]
说明:当前正在执行脚本的文件名

实例:
1,http://www.wenan8.com/ (直接打开主页)
结果:
$_SERVER["QUERY_STRING"] = “”
$_SERVER["REQUEST_URI"] = “/”
$_SERVER["SCRIPT_NAME"] = “/index.php”
$_SERVER["PHP_SELF"] = “/index.php”

2,http://www.wenan8.com/?s=55 (附带查询)
结果:
$_SERVER["QUERY_STRING"] = “s=55″
$_SERVER["REQUEST_URI"] = “/?s=55″
$_SERVER["SCRIPT_NAME"] = “/index.php”
$_SERVER["PHP_SELF"] = “/index.php”

3,http://www.wenan8.com/index.php?s=55&l=wenan
结果:
$_SERVER["QUERY_STRING"] = “s=55&l=wenan”
$_SERVER["REQUEST_URI"] = “/index.php?s=55&l=wenan”
$_SERVER["SCRIPT_NAME"] = “/index.php”
$_SERVER["PHP_SELF"] = “/index.php”

$_SERVER["QUERY_STRING"]获取查询语句,实例中可知,获取的是?后面的值
$_SERVER["REQUEST_URI"] 获取http://www.wenan8.com后面的值,包括/
$_SERVER["SCRIPT_NAME"] 获取当前脚本的路径,如:index.php
$_SERVER["PHP_SELF"] 当前正在执行脚本的文件名

分类: PHP 标签: ,

ThinkPHP U函数生成URL伪静态

2009年12月11日 admin 没有评论

ThinkPHP 提供了非常灵活的URL模式,可以自己定制URL,支持URL路由,非常方便.
再次介绍下利用U函数生成URL伪静态的功能。
首先, 在配置文件(config.php)里设置 URL_HTML_SUFFIX 设置静态后缀

1
2
3
4
5
6
7
<?php
return array(
'URL_HTML_SUFFIX'=>'.shtml',  //随意, 可设置其它的。
...
//其它配置信息
);
?>

来砍下手册U方法的定义规则:

U方法的定义规则如下(方括号内参数根据实际应用决定):
 
U('[项目://][路由@][分组名-模块/]操作? 参数1=值1[&参数N=值N]')
 
或者用数组的方式传入参数
 
U('[项目://][路由@][分组名-模块/]操作',array('参数1'=>'值1' [,'参数N'=>'值N']))
 
如果不定义项目和模块的话 就表示当前项目和模块名称,下面是一些简单的例子:
 
U('Myapp://User/add'// 生成Myapp项目的User模块的add操作的URL地址
 
U('Blog/read?id=1'// 生成Blog模块的read操作 并且id为1的URL地址
 
U('Admin-User/select'// 生成Admin分组的User模块的select操作的URL地址
 
参数请确保使用 ?id=1&name=tp或者数组的方式来定义,虽然有些情况下
 
U('Blog/read/id/1')和U('Blog/read?id=1')的效果一样
但是在不同的URL设置情况下,会导致解析的错误。
 
根据项目的不同URL设置,同样的U方法调用可以智能地对应产生不同的URL地址效果,例如针对
 
U('Blog/read?id=1')这个定义为例。
 
如果当前URL设置为普通模式的话,最后生成的URL地址是: 
 
http://<serverName>/index.php?m=Blog&a=read&id=1 
 
如果当前URL设置为PATHINFO模式的话,同样的方法最后生成的URL地址是: 
 
http://<serverName>/index.php/Blog/read/id/1 
 
如果当前URL设置为REWRITE模式的话,同样的方法最后生成的URL地址是: 
 
http://<serverName>/Blog/read/id/1 
 
如果当前URL设置为REWRITE模式,并且设置了伪静态后缀为.html的话,同样的方法最后生成的URL地址是: 
 
http://<serverName>/Blog/read/id/1.html 
 
U方法还可以支持路由,如果我们定义了一个名称为View的路由,指向Blog模块的read操作
参数是id,那么U('View@?id=1')生成的URL地址是:
 
http://<serverName>/index.php/View/id/1

好,我们只需在模板文件里 用U函数 生成的链接 就直接加上设置的后缀了。
例:
tpl/default/news/ 下的index.html文件

1
<a href="{:U("News/edit/id/$vo[id]")}">阅读</a>

是不是很强大! ^_^

分类: PHP 标签: , , ,