zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

PHP静态方法 参数 隐藏 传递 四种
2023-06-13 09:14:16 时间
伪静态方法一:
复制代码代码如下:

<?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_UrlQueryStrListas$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>";
//1echo$_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
//伪静态方法三
functionmod_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
}elsedie("Path:Error!");
//相当于soft.php?gid=1&sid=100&softid=8630
}elsedie("Path:Nothing!");
?>