PHP 伪静态实现技术原理讲解

发布于 2015-01-18 23:52:58 | 129 次阅读 | 评论: 0 | 来源: 网友投递

PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。

本文为大家讲解的是PHP 伪静态实现技术原理讲解,感兴趣的同学参考下。

伪静态技术比较好突破,需要自己构造中转注入页面;伪静态技术原理都很简单,就是把原来的 index.php?id=1 这种形式的URL给替换成其它形式

先说实现方法:

inj.php:

set_time_limit(10);

$id=$_GET["id"];

$id=str_replace(" ","%20",$id);

$id=str_replace("=","%3D",$id);

$url="http://www.xxx.com/index.php/library/more/id/$id.html";

$ch=curl_init();

curl_setopt($ch,CURLOPT_URL,"$url");

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//启用时将curl_init()获取的信息以文件流的形式返回,而不是直接输出

curl_setopt($ch,CURLOPT_HEADER,0);//启用时会将头文件的信息作为数据流输出

$output=curl_exec($ch);

curl_close($ch);

print_r($output);

?>

用wamp搭建一个服务器,把上面inj.php放到wamp/www/中,然后在Havij中跑 http://127.0.0.1/inj.php?id=1

=============================

PHP伪静态实现方法一(利用Apache 服务器的功能)

1、检查Apache是否支持mod_rewrite

2、让Apache 支持.htaccess

3、建立.htaccess文件

4、规则:

RewriteEngine on

RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2

([a-zA-Z]{1,})-([0-9]{1,}) 是 URL长啥样

$1 是([a-zA-Z]{1,}) 所匹配的

$2 是[0-9]{1,} 所匹配的

比如说:www.xx.com/page-18.html

真实的URL如下:

action = page

id = 18

============================

PHP伪静态实现方法二(编码实现)

$Php2Html_FileUrl = $_SERVER["REQUEST_URI"]

echo $Php2Html_FileUrl

例子:// localhost/php100/test.php?id|1@action|2

$Php2Html_UrlString = str_replace("?","",str_replace("/","",strrchr(strrchr($Php2Html_FileUrl,"/"),"?")) ))

/*

内层的strrchr出来:/test.php?id|1@action|2

外层的strrchr出来:id|1@action|2

内层的str_replace出来:把 / 号去掉,本例子 没有

外层的str_replace出来:把 ?号去掉,本例子 没有

*/

$Php2Html_UrlQueryStrList = explode("@",$Php2Html_UrlString);

/*把str变成以@为界限划分的数组:id|1 和 action|2*/

foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr)

{

$Php2Html_TmpArray = explode("|",$Php2Html_UrlQueryStr);

/* id => 1 和 action => 2*/

$_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];

}

============================

PHP伪静态实现方法三(编码实现)

例子: localhost/php100/test.php/1/2

$filename = basename($_SERVER["SCRIPT_NAME"]);

echo $_SERVER["SCRIPT_NAME"];

echo $filename;

if(strtolower($filename) == 'test.php'){

if(!empty($_GET[id])){

$id=intval($_GET[id]);

echo $id;

$action = intval($_GET[action]);

echo $action;

}else{

$nav=$_SERVER["REQUEST_URI"];

$script=$_SERVER["SRCIPT_NAME"];

//这句话应该是把URL前面那段给搞掉。。剩下 "1/2"之类的。。

$nav=ereg_replace("$script","",urldecode($nav));

echo $nav;

$vars = explode("/",$nav);

print_r($vars);

$id=intval($vars[1]);

$action=intval($vars[2]);

}

echo $id.'&'.$action;

}

============================

PHP伪静态实现方法四(编码实现)

function mod_rewrite(){

global $_GET;

$nav = $_SERVER["REQUEST_URI"];

$script_name = $_SERVER["SCRIPT_NAME"]

$nav=substr(ereg_replace("$script_name"),"",urldecode($nav)),1);

$nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//去掉尾部的htm或html

$vars=explode("/",$nav);

print_r($vars);

for($i=0;$i

{

$_GET[$vars[$i]] = $vars[$i+1];

}

return $_GET;

}

============================

PHP伪静态实现方法五(编码实现)

例子:/1,100,8630.html

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

echo "Path:Error!";

总结下:

(1)伪静态技术比较好突破,需要自己构造中转注入页面。

(2)伪静态技术原理都很简单,就是把原来的 index.php?id=1 这种形式的URL给替换成其它形式。

相关阅读:

PHP 伪静态实现技术原理讲解

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

php+.htaccess伪静态的实现方法

不用mod_rewrite直接用php实现伪静态化页面代码

php下实现伪静态的超简单方法

PHP生成静态页面原理讲解

使用纯php代码实现页面伪静态的方法

PHP实现伪静态方法汇总

PHP图像识别技术原理与实现

PHP中的插件机制原理和实现方法

php环境套包 dedeampz 伪静态设置示例

PHP生成静态文件的方法缓解服务器压力实现思路及代码

php 伪静态 page-18.html,PHP 伪静态实现技术原理讲解相关推荐

  1. 伪静态php配置,PHP开启伪静态配置

    1.检测Apache是否开启mod_rewrite功能 可以通过php提供的phpinfo()函数查看环境配置,找到"Loaded Modules",其中列出了所有apache2h ...

  2. Nginx伪静态配置和常用Rewrite伪静态规则集锦

    伪静态是一种可以把文件后缀改成任何可能的一种方法,如果我想把php文件伪静态成html文件,这种相当简单的,下面我来介绍nginx 伪静态配置方法 nginx里使用伪静态是直接在nginx.conf ...

  3. php网站怎么伪静态,php怎么实现网页伪静态

    php实现网页伪静态的方法:首先在服务器根目录创建一个".htaccess"文件:然后添加内容为"RewriteRule ^index-(\d+)\.html$ inde ...

  4. php中什么是伪静态,thinkphp中什么是伪静态?

    什么是伪静态? 简单说就是将动态的url变成静态的url显示,就叫做伪静态."伪"就是假的,不是真的静态url,是通过技术手段实现的. 伪静态技术是指展示出来的是以html一类的静 ...

  5. 织梦伪静态生成html,织梦伪静态助手

    插件名称: 织梦伪静态助手 插件介绍: <织梦伪静态助手>是织梦58发布的一款伪静态插件,通过该插件可以非常方便的打开织梦伪静态功能,且访问路径与PC版静态地址一致,对SEO更加友好.页面 ...

  6. php 伪静态作用,伪静态是什么?php使用伪静态的意义?

    有很多小伙伴们都是在做php开发工作,很多时候你们可能都会听到php伪静态这么一说,可能其中有很多小伙伴不知道什么是php伪静态,那么我们今天就带大家了解下什么是php伪静态,以及php使用伪静态的意 ...

  7. 18位身份证号验证算法的原理以及C#实现和在管理系统的应用

    18位身份证号验证算法的原理以及C#实现和在管理系统的应用 本博文介绍一下我自主开发的企业工资管理系统中关于员工18身份证号合法性验证的原理以及采用C#实现的代码.在实际的管理系统中应用!经过我自己的 ...

  8. 第18章 请勿陷入对技术的狂热之中

    第18章 请勿陷入对技术的狂热之中 如果你能让自己不成为某种技术的信徒, 你会在职业生涯之路走得更远 成为信徒的坏处在于往往狂热和富有偏见 作业: 和追求某个技术的人开诚布公地讨论为什么喜欢这个技术?

  9. php伪静态不支持中文,wordpress伪静态如何支持中文(目前不支持分类目录中文)...

    自定义结构可以用你自己喜欢的,比如可以只用用"/%post_id%.html",这样的访问地址就会是"http://xxx.com/id.html":当然你也可 ...

最新文章

  1. PAT甲级1151 LCA in a Binary Tree (30 分):[C++题解]LCA、最低公共祖先、哈希表映射
  2. linux 英伟达 分辨率,配置nVidia显卡修改Ubuntu分辨率
  3. ffmpeg: error while loading shared libraries: libavdevice.so.52
  4. flexcell控件 许可证信息没有找到_报表控件 ActiveReports 全面迎来 .Net Core 时代
  5. 计算机维修知识综述论文,机器学习领域各领域必读经典综述论文整理分享
  6. 高职院校计算机基础课程,高职院校计算机基础课程教学探讨的论文
  7. Oracle几种清除数据的方式,在平台用别的医院数据库做初始化时有用
  8. hyper-V管理器构建win7虚拟机
  9. JFreechart从入门到放弃
  10. Vue 移动端 股票 分时 K线
  11. 基于nacos搭建springboot 抽取axios
  12. 树莓派编译ch934x usb转多串口驱动
  13. Python项目文件引用问题:ImportError: attempted relative import with no known parent package
  14. 解决idea在运行时出现Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8?
  15. 记录自己的成长--个人日记1
  16. LIGO 用 Python 分析引力波数据
  17. 网络计划--时间参数的计算和优化
  18. matlab用已知二维数组做plot_Matlab二维数组及其应用
  19. 【引用】雨林木风Ghost XP SP3系统
  20. HDTUNE软件测试自学,HDTune Pro读取性能测试_DIY攒机-中关村在线

热门文章

  1. Centos配置yum为阿里源
  2. 学习原来可以如此简单
  3. 什么是高/低方差、高/低偏差、(推荐阅读)
  4. Pytorch nn.init 参数初始化方法
  5. Keras框架下的保存模型和加载模型
  6. Http请求之优雅的RestTemplate
  7. 合肥工业大学—SQL Server数据库实验八:使用聚集函数的SELECT语句
  8. 王道考研 计算机网络笔记 第四章:网络层
  9. Shiro第一个程序:官方快速入门程序Qucickstart详解教程
  10. GPU、AI芯片技术市场分析