php

位置:IT落伍者 >> php >> 浏览文章

PHP 伪静态技术原理以及突破原理实现介绍


发布日期:2019年02月09日
 
PHP 伪静态技术原理以及突破原理实现介绍
伪静态技术比较好突破需要自己构造中转注入页面伪静态技术原理都很简单就是把原来的 indexphp?id= 这种形式的URL给替换成其它形式

先说实现方法
injphp:

复制代码 代码如下:
<?php
set_time_limit();
$id=$_GET["id"];
$id=str_replace(" ""%"$id);
$id=str_replace("=""%D"$id);
$url="";
$ch=curl_init();
curl_setopt($chCURLOPT_URL"$url");
curl_setopt($chCURLOPT_RETURNTRANSFER);//启用时将curl_init()获取的信息以文件流的形式返回而不是直接输出
curl_setopt($chCURLOPT_HEADER);//启用时会将头文件的信息作为数据流输出
$output=curl_exec($ch);
curl_close($ch);
print_r($output);
?>


用wamp搭建一个服务器把上面injphp放到wamp/www/中然后在Havij中跑
=============================
PHP伪静态实现方法一(利用Apache 服务器的功能)
检查Apache是否支持mod_rewrite
让Apache 支持htaccess
建立htaccess文件
规则
RewriteEngine on
RewriteRule ([azAZ]{})([]{})html$indexphp?action=$&id=$
([azAZ]{})([]{}) 是 URL长啥样
$ 是([azAZ]{}) 所匹配的
$ 是[]{} 所匹配的
比如说wwwxxcom/pagehtml
真实的URL如下
action = page
id =
============================
PHP伪静态实现方法二(编码实现)
$PhpHtml_FileUrl = $_SERVER["REQUEST_URI"]
echo $PhpHtml_FileUrl
例子// localhost/php/testphp?id|@action|

复制代码 代码如下:
$PhpHtml_UrlString = str_replace("?"""str_replace("/"""strrchr(strrchr($PhpHtml_FileUrl"/")"?")) ))
/*
内层的strrchr出来/testphp?id|@action|
外层的strrchr出来id|@action|
内层的str_replace出来把 / 号去掉本例子 没有
外层的str_replace出来把 ?号去掉本例子 没有
*/
$PhpHtml_UrlQueryStrList = explode("@"$PhpHtml_UrlString);
/*把str变成以@为界限划分的数组id| 和 action|*/
foreach($PhpHtml_UrlQueryStrList as $PhpHtml_UrlQueryStr)
{
$PhpHtml_TmpArray = explode("|"$PhpHtml_UrlQueryStr);
/* id => 和 action => */
$_GET[$PhpHtml_TmpArray[]] = $PhpHtml_TmpArray[];
}


============================
PHP伪静态实现方法三(编码实现)
例子: localhost/php/testphp//

复制代码 代码如下:
$filename = basename($_SERVER["SCRIPT_NAME"]);
echo $_SERVER["SCRIPT_NAME"];
echo $filename;
if(strtolower($filename) == testphp){
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前面那段给搞掉剩下 "/"之类的
$nav=ereg_replace("$script"""urldecode($nav));
echo $nav;
$vars = explode("/"$nav);
print_r($vars);
$id=intval($vars[]);
$action=intval($vars[]);
}
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)));
$nav=preg_replace("/^ht(m){}(l){}$/"""$nav);//去掉尾部的htm或html
$vars=explode("/"$nav);
print_r($vars);
for($i=;$i<count($vars);$i+=)
{
$_GET[$vars[$i]] = $vars[$i+];
}
return $_GET;
}


============================
PHP伪静态实现方法五(编码实现)
例子/html

复制代码 代码如下:
if(preg_match(“//(d+)(d+)(d+)html/si”$path_info$arr_path)){
$gid =intval($arr_path[]); //取得值
$sid =intval($arr_path[]); //取得值
$softid =intval($arr_path[]); //取得值
}
else
echo "Path:Error!";


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

               

上一篇:PHP将整个网站生成HTML静态

下一篇:PHP生成雪花背景的网站验证码