路由的写法 一判断
m=admin&a=admin
$_GET["m"]=!empty($_GET['m'])?$_GET['m']:index;
$_GET["a"]=!empty($_GET['a'])?$_GET['a']:index;
if($_SERVER["QUERY_STRING"]){ //$_SERVER["QUERY_STRING"]获取?以后的值
$m=$_GET['m']; 获取m得方法
unset($_GET['m']);
$a=$_GET['a']; 获取a得方法
unset($_GET['a']);
$query=http_bulid_query($_GET); //重组url 获取 a=admin后边的值 组成s=&2=q
$uri=$_SERVER['SCRIPT_NAME']."/{$m}/{$a}/".pre_replace(arrary("&","="), "/", $query);
header("Location:".$url);
}
这样就能输出pathinfo的模式
if(issset($_SERVER['PATH_INFO'])){
$pathinfo=explode('/',trim($_SERVER['PATH_INFO'],"/")); //分割pathingo成为数组
//获取action
$_GET['m']=(!empty($pathinfo[0])?$pathinfo[0]:'index');
//将数组的单元移除数组
array_shift($pathinfo);
$_GET['a']=(!empty($pathinfo[0])?$pathinfo[0]:'index');
for($i=0; $i<count($pathinfo); $i+=2){ //每次加2 计算/$_GET['m']/$_GET['a'] 所以每次加2
$_GET[$pathinfo[$i]]=$pathinfo[$i+1];
}
}
路由解析类就是这样写成的 完整的是
<?php
class Router{
/*
*URL专为PATHINFO格式
*/
static function praseurl(){
if(isset($_SERVER['PATH_INFO'])){
//获取pathinfo
$pathinfo=explode('/',trim($_SERVER['PATH_INFO'],"/"));
//获取action
$_GET['m']=(!empty($pathinfo[0])?$pathinfo[0]:'index');
//将数组的单元移除数组
array_shift($pathinfo);
$_GET['a']=(!empty($pathinfo[0])?$pathinfo[0]:'index');
for($i=0; $i<count($pathinfo); $i+=2){
$_GET[$pathinfo[$i]]=$pathinfo[$i+1];
}
}else{
$_GET["m"]= (!empty($_GET['m']) ? $_GET['m']: 'index'); //默认是index模块
$_GET["a"]= (!empty($_GET['a']) ? $_GET['a'] : 'index'); //默认是index动作
if($_SERVER["QUERY_STRING"]){
$m=$_GET["m"];
unset($_GET["m"]); //去除数组中的m
$a=$_GET["a"];
unset($_GET["a"]); //去除数组中的a
$query=http_build_query($_GET); //形成0=foo&1=bar&2=baz&3=boom&cow=milk格式
//组成新的URL
$url=$_SERVER["SCRIPT_NAME"]."/{$m}/{$a}/".str_replace(array("&","="), "/", $query);
header("Location:".$url);
}
}
}
}
欢迎转载,转载请注明来自微度网络-网络技术中心http://yun.widuu.com

发表评论 取消回复