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 相关文章推荐
用PHP连接Oracle for NT 远程数据库
Oct 09 PHP
php 模拟POST|GET操作实现代码
Jul 20 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
Feb 15 PHP
php返回字符串中所有单词的方法
Mar 09 PHP
php实现文本数据导入SQL SERVER
May 17 PHP
Symfony2之session与cookie用法小结
Mar 18 PHP
session 加入redis的实现代码
Jul 15 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 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
PHP在字符断点处截断文字的实现代码
2011/04/21 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
PHP 读取和编写 XML
2014/11/19 PHP
php实现生成验证码实例分享
2016/04/10 PHP
让广告代码不再影响你的网页加载速度
2006/07/07 Javascript
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
利用yarn实现一个webpack+react种子
2016/10/25 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
用director.js实现前端路由使用实例
2017/01/27 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
JavaScript Date对象应用实例分享
2017/10/30 Javascript
React中的render何时执行过程
2018/04/13 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
微信小程序倒计时功能实例代码
2018/07/17 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
python实现两张图片的像素融合
2019/02/23 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
python logging设置level失败的解决方法
2020/02/19 Python
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
酒店服务与管理毕业生求职信
2013/11/02 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
个人借款担保书
2014/04/02 职场文书
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android