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+MYSQL 出现乱码的解决方法
Aug 08 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
php输出xml必须header的解决方法
Oct 17 PHP
PHP时间类完整实例(非常实用)
Dec 25 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
php实现的二分查找算法示例
Jun 20 PHP
PHP环形链表实现方法示例
Sep 15 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
is_file和file_exists效率比较
Mar 14 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
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
php生成xml时添加CDATA标签的方法
2014/10/17 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
如何在PHP中读写文件
2020/09/07 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
javascript 节点排序 2
2011/01/31 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
微信小程序异步处理详解
2017/11/10 Javascript
angular动态表单制作
2018/02/23 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
Python 数据结构之队列的实现
2017/01/22 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
白酒业务员岗位职责
2013/12/27 职场文书
竟聘演讲稿范文
2013/12/31 职场文书
期终自我鉴定
2014/02/17 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
中职毕业生自我鉴定范文(3篇)
2014/09/28 职场文书
幼儿园中班教师个人总结
2015/02/05 职场文书
2016春节慰问信范文
2015/03/25 职场文书
大学生实习证明
2015/06/16 职场文书