投稿 评论 顶部

【php】php伪静态的四种方法总结

佚名 网络安全

PHP伪静态的使用主要是为了隐藏传递的参数名。今天我们向大家介绍的PHP伪静态的方法总共有四种,希望大家能够通过这四种方法进一步加深对PHP伪静态的了解。

以下就是全部方法代码:

     
  1. <?php?
  2. //伪静态方法一 ?
  3. ?
  4. //?localhost/php100/test.php?id|1@action|2 ?
  5. $Php2Html_FileUrl?=?$_SERVER["REQUEST_URI"]; ?
  6. echo?$Php2Html_FileUrl."<br>";//?/php100/test.php?id|1@action|2 ?
  7. $Php2Html_UrlString?=?str_replace("?","",str_replace("/",?"",?strrchr(strrchr($Php2Html_FileUrl,?"/"),"?"))); ?
  8. echo?$Php2Html_UrlString."<br>";//?id|1@action|2 ?
  9. $Php2Html_UrlQueryStrList?=?explode("@",?$Php2Html_UrlString); ?
  10. print_r($Php2Html_UrlQueryStrList);//?Array?(?[0]?=>?id|1?[1]?=>?action|2?) ?
  11. echo?"<br>"; ?
  12. foreach($Php2Html_UrlQueryStrList?as?$Php2Html_UrlQueryStr) ?
  13. { ?
  14. $Php2Html_TmpArray?=?explode("|",?$Php2Html_UrlQueryStr); ?
  15. print_r($Php2Html_TmpArray);//?Array?(?[0]?=>?id?[1]?=>?1?)?;?Array?(?[0]?=>?action?[1]?=>?2?) ?
  16. echo?"<br>"; ?
  17. $_GET[$Php2Html_TmpArray[0]]?=?$Php2Html_TmpArray[1]; ?
  18. } ?
  19. //echo?'假静态:$_GET变量<br?/>'; ?
  20. print_r($_GET);?//?Array?(?[id|1@action|2]?=>?[id]?=>?1?[action]?=>?2?) ?
  21. echo?"<br>"; ?
  22. echo?"<hr>"; ?
  23. echo?$_GET[id]."<br>";//?1 ?
  24. echo?$_GET[action];//?2 ?
  25. ?>?

     
  1. <?php?
  2. //伪静态方法二 ?
  3. ?
  4. //?localhost/php100/test.php/1/2 ?
  5. $filename?=?basename($_SERVER['SCRIPT_NAME']); ?
  6. echo?$_SERVER['SCRIPT_NAME']."<br>";//?/php100/test.php ?
  7. echo?$filename."<br>";//?test.php ?
  8. ?
  9. if(strtolower($filename)=='test.php'){ ?
  10. ?if(!empty($_GET[id])){ ?
  11. ??$id=intval($_GET[id]); ?
  12. ??echo?$id."<br>"; ?
  13. ??$action=intval($_GET[action]); ?
  14. ??echo?$action."<br>"; ?
  15. ?}else{ ?
  16. ??$nav=$_SERVER['REQUEST_URI']; ?
  17. ??echo?"1:".$nav."<br>";//?/php100/test.php/1/2 ?
  18. ??$script=$_SERVER['SCRIPT_NAME']; ?
  19. ??echo?"2:".$script."<br>";//?/php100/test.php ?
  20. ??$nav=ereg_replace("^$script","",urldecode($nav)); ?
  21. ??echo?$nav."<br>";?//?/1/2 ?
  22. ??$vars=explode("/",$nav); ?
  23. ??print_r($vars);//?Array?(?[0]?=>?[1]?=>?1?[2]?=>?2?) ?
  24. ??echo?"<br>"; ?
  25. ??$id=intval($vars[1]); ?
  26. ??$action=intval($vars[2]); ?
  27. ?} ?
  28. ?echo?$id.'&'.$action; ?
  29. } ?
  30. ?>?

     
  1. <?php?
  2. //伪静态方法三 ?
  3. ?
  4. ?
  5. function?mod_rewrite(){ ?
  6. global?$_GET; ?
  7. $nav=$_SERVER["REQUEST_URI"]; ?
  8. echo?$nav."<br>"; ?
  9. $script_name=$_SERVER["SCRIPT_NAME"]; ?
  10. echo?$script_name."<br>"; ?
  11. $nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1); ?
  12. echo?$nav."<br>"; ?
  13. $nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm ?
  14. echo?$nav."<br>"; ?
  15. $vars?=?explode("/",$nav); ?
  16. print_r($vars); ?
  17. echo?"<br>"; ?
  18. for($i=0;$i<Count($vars);$i+=2){ ?
  19. $_GET["$vars[$i]"]=$vars[$i+1]; ?
  20. } ?
  21. return?$_GET; ?
  22. } ?
  23. mod_rewrite(); ?
  24. $year=$_GET["year"];//结果为'2006' ?
  25. echo?$year."<br>"; ?
  26. $action=$_GET["action"];//结果为'_add' ?
  27. echo?$action; ?
  28. ?>?

     
  1. <?php?
  2. //伪静态方法四 ?
  3. ?
  4. //利用server变量?取得PATH_INFO信息?该例中为?/1,100,8630.html???也就是执行脚本名后面的部分 ?
  5. if(@$path_info?=$_SERVER["PATH_INFO"]){ ?
  6. //正则匹配一下参数 ?
  7. if(preg_match("/\/(\d+),(\d+),(\d+)\.html/si",$path_info,$arr_path)){ ?
  8. $gid?????=intval($arr_path[1]);?//取得值?1 ?
  9. $sid?????=intval($arr_path[2]);???//取得值100 ?
  10. $softid???=intval($arr_path[3]);???//取得值8630 ?
  11. }else?die("Path:Error!"); ?
  12. //相当于soft.php?gid=1&sid=100&softid=8630?
  13. }else?die('Path:Nothing!'); ?
  14. ?>?

以上就是本文介绍的四种PHP伪静态的方法,希望对大家有所帮助。

文章来源:http://blog.sina.com.cn/s/blog_4a657b6b0100gdnk.html