PHP 伪静态隐藏传递参数名的四种方法


Posted in PHP onFebruary 22, 2010

伪静态方法一:

<?php 
//伪静态方法一 
// localhost/php100/test.php?id|1@action|2 
$Php2Html_FileUrl = $_SERVER["REQUEST_URI"]; 
echo $Php2Html_FileUrl."<br>"; 
// /php100/test.php?id|1@action|2 
$Php2Html_UrlString = str_replace("?","",str_replace("/", "", strrchr(strrchr($Php2Html_FileUrl, "/"),"?"))); 
echo $Php2Html_UrlString."<br>"; 
// id|1@action|2 
$Php2Html_UrlQueryStrList = explode("@", $Php2Html_UrlString); 
print_r($Php2Html_UrlQueryStrList); 
// Array ( [0] => id|1 [1] => action|2 ) echo "<br>"; 
foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr) { 
$Php2Html_TmpArray = explode("|", $Php2Html_UrlQueryStr); 
print_r($Php2Html_TmpArray); 
// Array ( [0] => id [1] => 1 ) ; Array ( [0] => action [1] => 2 ) 
echo "<br>"; 
$_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1]; 
} 
//echo '假静态:$_GET变量<br />'; 
print_r($_GET); 
// Array ( [id|1@action|2] => [id] => 1 [action] => 2 ) echo "<br>"; 
echo "<hr>"; 
echo $_GET[id]."<br>"; 
// 1 echo $_GET[action]; 
// 2 
?>

伪静态方法二: 
<?php 
//伪静态方法二 
// localhost/php100/test.php/1/2 
$filename = basename($_SERVER['SCRIPT_NAME']); 
echo $_SERVER['SCRIPT_NAME']."<br>";// /php100/test.php 
echo $filename."<br>";// test.php 
if(strtolower($filename)=='test.php'){ 
if(!empty($_GET[id])){ 
$id=intval($_GET[id]); 
echo $id."<br>"; 
$action=intval($_GET[action]); 
echo $action."<br>"; 
}else{ 
$nav=$_SERVER['REQUEST_URI']; 
echo "1:".$nav."<br>";// /php100/test.php/1/2 
$script=$_SERVER['SCRIPT_NAME']; 
echo "2:".$script."<br>";// /php100/test.php 
$nav=ereg_replace("^$script","",urldecode($nav)); 
echo $nav."<br>"; // /1/2 
$vars=explode("/",$nav); 
print_r($vars);// Array ( [0] => [1] => 1 [2] => 2 ) 
echo "<br>"; 
$id=intval($vars[1]); 
$action=intval($vars[2]); 
} 
echo $id.'&'.$action; 
} 
?>

伪静态方法三:
<?php 
//伪静态方法三 
function mod_rewrite(){ 
global $_GET; 
$nav=$_SERVER["REQUEST_URI"]; 
echo $nav."<br>"; 
$script_name=$_SERVER["SCRIPT_NAME"]; 
echo $script_name."<br>"; 
$nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1); 
echo $nav."<br>"; 
$nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm 
echo $nav."<br>"; 
$vars = explode("/",$nav); 
print_r($vars); 
echo "<br>"; 
for($i=0;$i<Count($vars);$i+=2){ 
$_GET["$vars[$i]"]=$vars[$i+1]; 
} 
return $_GET; 
} 
mod_rewrite(); 
$year=$_GET["year"];//结果为'2006' 
echo $year."<br>"; 
$action=$_GET["action"];//结果为'_add' 
echo $action; 
?>

伪静态方法四:
<?php 
//伪静态方法四 
//利用server变量 取得PATH_INFO信息 该例中为 /1,100,8630.html 也就是执行脚本名后面的部分 
if(@$path_info =$_SERVER["PATH_INFO"]){ 
//正则匹配一下参数 
if(preg_match("/\/(\d+),(\d+),(\d+)\.html/si",$path_info,$arr_path)){ 
$gid=intval($arr_path[1]); //取得值 1 
$sid=intval($arr_path[2]); //取得值100 
$softid=intval($arr_path[3]); //取得值8630 
}else die("Path:Error!"); 
//相当于soft.php?gid=1&sid=100&softid=8630 
}else die('Path:Nothing!'); 
?>
PHP 相关文章推荐
我的论坛源代码(三)
Oct 09 PHP
在windows服务器开启php的gd库phpinfo中未发现
Jan 13 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
PHP程序员基本要求和必备技能
May 09 PHP
php使用date和strtotime函数输出指定日期的方法
Nov 14 PHP
PHP实现加密的几种方式介绍
Feb 22 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
Jan 08 PHP
Zend Framework教程之视图组件Zend_View用法详解
Mar 05 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
Mar 28 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
Jul 18 PHP
PHP设计模式之委托模式定义与用法简单示例
Aug 13 PHP
收藏的PHP常用函数 推荐收藏保存
Feb 21 #PHP
Search File Contents PHP 搜索目录文本内容的代码
Feb 21 #PHP
php中理解print EOT分界符和echo EOT的用法区别小结
Feb 21 #PHP
用Zend Encode编写开发PHP程序
Feb 21 #PHP
PHP 学习路线与时间表
Feb 21 #PHP
php 高效率写法 推荐
Feb 21 #PHP
php 魔术函数使用说明
Feb 21 #PHP
You might like
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
PHP实现单例模式最安全的做法
2014/06/13 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
jQuery 使用手册(四)
2009/09/23 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
Javascript 中 null、NaN和undefined的区别总结
2013/04/10 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
javascript读写json示例
2014/04/11 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
python生成器推导式用法简单示例
2019/10/08 Python
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
业务部主管岗位职责
2014/01/29 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
十八大演讲稿
2014/05/22 职场文书
民间借贷纠纷答辩状
2015/08/03 职场文书
vue router 动态路由清除方式
2022/05/25 Vue.js