PHP 伪静态隐藏传递参数名的四种方法
thinkphp centos伪静态规则
ThinkPHP CentOS伪静态规则一、概述在使用ThinkPHP框架开发网站时,为了提高网站的性能和SEO优化,我们通常会采用伪静态技术来隐藏URL中的参数,并将其转化为有意义的静态URL。
本文将介绍在CentOS系统下如何配置ThinkPHP伪静态规则。
二、Apache服务器配置要实现ThinkPHP的伪静态功能,我们首先需要在Apache服务器上进行配置。
以下是具体步骤:1. 安装Apache服务器在CentOS系统上安装Apache服务器可以使用以下命令:sudo yum install httpd2. 启动Apache服务器安装完成后,使用以下命令启动Apache服务器:sudo systemctl start httpd3. 修改Apache配置文件Apache的配置文件位于/etc/httpd/conf/httpd.conf。
使用文本编辑器打开该文件,并找到以下内容:<Directory "/var/www/html">AllowOverride None</Directory>将AllowOverride None改为AllowOverride All,保存并关闭文件。
4. 重启Apache服务器修改配置文件后,需要重启Apache服务器使配置生效:sudo systemctl restart httpd三、ThinkPHP伪静态规则配置在完成Apache服务器的配置后,我们需要在ThinkPHP应用中进行伪静态规则的配置。
以下是具体步骤:1. 创建.htaccess文件在ThinkPHP应用的根目录下创建一个名为.htaccess的文件,并将以下内容复制到文件中:RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]2. 配置URL模式在ThinkPHP的配置文件config.php中,找到以下内容:'url_model' => 0,将url_model的值改为2,即开启了PATHINFO模式。
phpcms伪静态规则
phpcms伪静态规则
伪静态是一种网站优化技术,指通过修改URL的结构来模拟静态
页面的效果。
PHP框架中也通过修改.htaccess文件来实现伪静态。
以
下是phpcms的伪静态规则:
1. 将默认首页的链接从index.php改为index.html,
在.htaccess文件中添加以下规则:
RewriteRule ^index\.html$ index.php [L]
2. 将栏目页的链接从list.php改为栏目名称.html,例如新闻
栏目的链接为news.html,规则如下:
RewriteRule ^news\.html$ list.php?catid=1 [L]
3. 将内容页的链接从show.php改为栏目名称/文章标题.html,
例如新闻栏目下一篇文章的链接为news/2018/1/1/1.html,规则如下:RewriteRule
^news/(\d+)/(\d+)/(\d+)/(\d+)\.html$ show.php?catid=1&id=$4 [L]
以上是phpcms的伪静态规则,通过这种方式可以提高网站的访
问速度和用户体验。
thinkphp3伪静态规则
thinkphp3伪静态规则ThinkPHP3伪静态规则ThinkPHP3是一款开源的PHP开发框架,它提供了众多的功能和特性,方便开发者进行Web应用的开发。
其中,伪静态规则是一个非常重要的功能,它可以让URL看起来更加美观,并且有利于搜索引擎的收录。
本文将介绍ThinkPHP3伪静态规则的使用方法和常见问题解决方案。
一、什么是伪静态规则伪静态是指将动态生成的URL转化为静态的形式,使其看起来像是静态页面的URL。
通过伪静态规则的配置,我们可以实现URL的优化,让URL更加友好和易读。
二、伪静态规则的配置在ThinkPHP3中,我们可以通过修改.htaccess文件来配置伪静态规则。
在项目的根目录下,可以找到.htaccess文件,打开它,我们可以看到以下内容:```RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]```上述代码是ThinkPHP3默认的伪静态规则配置,它的作用是将所有的请求都重定向到index.php文件,并将请求的URL作为参数传递给index.php文件。
三、伪静态规则的自定义如果我们想要自定义伪静态规则,可以在.htaccess文件中添加以下内容:```RewriteRule^news/(\d+)$ index.php?m=home&c=News&a=detail&id=$ 1 [QSA,PT,L]```上述代码的作用是将类似于“news/123”这样的URL重定向到index.php文件,并将参数传递给index.php文件的对应控制器和方法。
四、常见问题解决方案1. 404错误:如果在使用伪静态规则后出现404错误,可以尝试修改.htaccess文件中的RewriteBase配置,将其设置为项目的根目录。
.htaccess实现PHP伪静态
php 伪静态php伪静态实例 .htaccess Rewrite apache重写技术首先:必须要空间支持Rewrite 以及对站点目录中有 .htaccess 的文件解析,才有效.如何让空间支持Rewrite 和 .htaccess 的文件解析呢往下看第一步:要找到apache安装目录下的httpd.cof文件,在里面找到<Directory />Options FollowSymLinksAllowOverride none</Directory>把none改all,第二步:找到以下内容:#LoadModule rewrite_module modules/mod_rewrite.so改为LoadModule rewrite_module modules/mod_rewrite.so第三步:保存重启apache。
ok。
其次是.htaccess的书写规则:.htaccess加入以下内容RewriteEngine OnRewriteBase /RewriteRule ^(.*)list-id([0-9]+)\.html$ $1/company/search.php?sectorid2=$2 RewriteRule^(.*)cominfo-([a-z0-9]+)\.html$ $1/member/index.php?uid=$2&type=cominfo RewriteRule^(.*)list-([0-9]+)-([0-9]+)\.html$ $1/plus/list.php?typeid=$2&PageNo=$3 RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.lujin\.com$RewriteCond %{HTTP_HOST} !^(www|bbs)\.lujin\.com$RewriteRule ^/?$ /%{HTTP_HOST}RewriteRule ^/([a-z0-9\-]+)\.lujin\.com/?$ /member/index.php?uid=$1 [L]对上面的一些解释RewriteRule ^(.*)list-id([0-9]+)\.html$ $1/company/search.php?sectorid2=$2这条是把企业库的分类进行伪静态处理原先假设访问地址为/company/search.php?sectorid2=1现在地址为/list-id1.html优点:1、伪静态处理加速搜索引擎收入2、地址映射到根目录,增加权重,提高排名3、也不知道还有什么……RewriteRule^(.*)list-([0-9]+)-([0-9]+)\.html$ $1/plus/list.php?typeid=$2&PageNo=$3这个是供求等分类的列表,和上面的原理类似,到页面相应修改即可下面是会员空间的二级域名方案前提是把域名设置好泛解析RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.lujin\.com$RewriteCond %{HTTP_HOST} !^(www|bbs)\.lujin\.com$RewriteRule ^/?$ /%{HTTP_HOST}RewriteRule ^/([a-z0-9\-]+)\.lujin\.com/?$ /member/index.php?uid=$1 [L]假设原先的地址为/member/index.php?uid=admin现在地址为你只要在你想出现的地方放上这个就可以,比如在列表页面可以用[field:writer/]获取用户名,那么就可以在列表页面直接链接会员空间,可以写成http://[field:writer/]其他伪静态原理和上面类似。
php的apache伪静态
php的apache伪静态导语:现有的在线网上视频教程对伪静态的讲解比较简单,但不全面,小编以一个真实案例来讲解伪静态的制作过程。
欢迎参考!步骤开始:(1)启用rewrite模块,在默认情况下,没有启用修改httpd.conf文件,启动rewrite模块去掉LoadModulerewrite_modulemodules/mod_rewrite.so前的#号即可(2)配置我们的虚拟主机httpd.conf打开虚拟主机的配置文件#VirtualhostsIncludeconf/extra/httpd-vhosts.conf修改httpd-vhost.conf<VirtualHost*:80>DocumentRoot"F:/Appserv//xh"ServerNamexh<Directory"F:/Appserv//xh">AllowOverrideAll</Directory></VirtualHost>我是用的是appserv集成环境,安装在F盘(3)在hosts文件中,配置ip和主机的对应关系127.0.0.1xh(4)在F:/Appserv//xh目录下建立.htaccess文件,写入<IfModulemod_rewrite.c>RewriteEngineonRewriteRule^([0-9]+)$ index.php/Index/index/p/$1RewriteRule^([A-Z])_(d+)$ index.php/List/index/first_letter/$1/p/$2RewriteRule^([A-Z])$ index.php/List/index/first_letter/$1</IfModule>解释一下上面那段话,访问2 => index.php/Index/index/p/2D_2 => index.php/List/index/first_letter/D/p/2D => index.php/List/index/first_letter/D2表示全部歇后语的第二页,D_2表示以字母D打头的歇后语的第二页,而单独一个字母D就表示以D打头的以第一页好了问题来了,大部分教程只告诉你怎么在.htaccess中重写url,那么我们要让用户点击时显示的也是静态网址,这样表意清晰,目录结构简单,对用户对搜索引擎都比较友好,我们是不会在地址栏里头一个一个的敲入静态网址的,这个问题该怎么解决呢?很简单,只需对模板中的分页标签变量{$page}做一个简单的正则替换,如下,首页列表分页的替换:<divclass="pagination"><?phpechopreg_replace('/index.ph p/Index/index/p/(d+)/','$1',$page);?></div>字母列表分页的替换:<divclass="pagination"><?phpechopreg_replace('/index.php/List/index/first_letter/([A-Z])/p/(d+)/','$1_$2',$page);?></div> 循环26个字母的改写(去掉没有结果的那些字母,只需做一个简单的链接改写,改成字母即可,无需正则替换)for($i=97;$i<=122;$i++){$c=strtoupper(chr($i));if($c==I||$c==U||$c==V)continue;echo'<li><ahref="'.$c.'">'.$c.'</a></li>';}好了,伪静态就这么简单,我以这个简单的例子阐述了伪静态从头到尾的过程,方便大家学习和交流,目的在于针对多数教程的一个补充,需要完成更复杂任务的同学,请自行深入研究伪静态吧!。
thinkphp 伪静态规则
thinkphp 伪静态规则摘要:1.什么是ThinkPHP伪静态规则2.ThinkPHP伪静态规则的作用3.如何配置ThinkPHP伪静态规则4.配置伪静态规则的注意事项5.总结正文:ThinkPHP是一款非常受欢迎的PHP开发框架,它提供了很多实用的功能,其中就包括伪静态规则。
伪静态规则可以帮助开发者更方便地管理和控制网站的URL结构,提高用户体验。
本文将详细介绍什么是ThinkPHP伪静态规则,以及如何配置它。
1.什么是ThinkPHP伪静态规则ThinkPHP伪静态规则是指在URL中使用伪静态规则,将动态的URL转换为静态的、易读的URL。
例如,将一个新闻列表页面的URL从`/index.php?c=news&m=list`转换为`/news/list`。
这样做可以提高用户体验,因为静态URL更容易被搜索引擎收录,也更容易被用户记住。
2.ThinkPHP伪静态规则的作用ThinkPHP伪静态规则主要有以下几个作用:- 提高用户体验:静态URL更容易被用户理解和记住,可以提高用户的回访率。
- 利于搜索引擎优化:静态URL更容易被搜索引擎收录,有利于提高网站的排名。
- 简化URL结构:使用伪静态规则可以让URL结构更加简洁明了,便于管理和维护。
3.如何配置ThinkPHP伪静态规则要配置ThinkPHP伪静态规则,需要进行以下几个步骤:- 安装ThinkPHP框架:首先需要安装ThinkPHP框架,可以在官方网站下载最新版本。
- 创建伪静态规则文件:在框架的`application`目录下,创建一个名为`route.php`的文件,用于配置伪静态规则。
- 配置伪静态规则:打开`route.php`文件,添加以下代码:```php<?php// 伪静态规则配置// 设置默认的伪静态后缀define("APP_URL_HTML", "html");// 设置伪静态规则function rules($rules) {// 这里可以自定义伪静态规则,例如:// $rules["index"] = "index"; // 将index.php伪静态为index// $rules["news/:id"] = "show"; // 将news/:id.php伪静态为show// ...return $rules;}```- 配置服务器:将服务器配置为支持伪静态规则。
ThinkPHP5.1教程48.伪静态.参数绑定.请求缓存
48.伪静态.参数绑定.请求缓存学习要点:1.伪静态2.参数绑定3.请求缓存本节课我们来学习一下伪静态的设置,操作方法的参数绑定,以及响应输出缓存。
一.伪静态1.先使用Url::build()方法获取当前的url路径,得到默认的后缀为.html;return Url::build();2.可以通过app.php修改伪静态的后缀,比如修改成shtml、xml等;'url_html_suffix'=>'xml',3.如果地址栏用后缀访问成功后,可以使用Request::ext()方法得到当前伪静态;return Request::ext();4.配置文件伪静态后缀,可以支持多个,用竖线隔开,访问时不在区间内则报错;'url_html_suffix'=>'shtml|xml|pdf',5.直接将伪静态配置文件设置为false,则关闭伪静态功能;'url_html_suffix'=>false,二.参数绑定1.参数绑定功能:即URL地址栏的数据传参,我们一直在使用的功能;public function get($id){return'get:'.$id;}2.操作方法URL:/get,而带上id参数后,则为:/get/id/5;3.如果缺少了/5或者缺少了/id/5,则都会报错方法参数错误:id;4.那么解决方案,就是给$id=0一个默认值,防止URL参数错误;5.如果设置了两个参数,那么参数传递的执行顺序可以设置,比如;public function get($id,$name){return'get:'.$id.','.$name;}6.不管是:/id/5/name/lee,还是:/name/lee/id/5,都不会产生错误;7.但如果你在app.php中设置了,必须按照顺序去传递参数,则需要严格;//URL参数方式0按名称成对解析1按顺序解析'url_param_type'=>1,/get/5/lee//不需要再传递id和name,直接按顺序传值即可三.请求缓存1.请求缓存仅对GET请求有效,并设置有效期;2.可以设置全局请求缓存,在app.php中设置;'request_cache'=>true,'request_cache_expire'=>3600,3.当第二次访问时,会自动获取请求缓存的数据响应输出,并发送304状态码;4.如果要对路由设置一条缓存,直接使用cache(3600)方法;Route::get('edit/:id','Rely/edit')->cache(3600);。
三种实现PHP伪静态页面的方法
三种实现PHP伪静态页⾯的⽅法PHP伪静态写法--其⼀伪静态⼜名:URL重写主要是为了SEO⽽⽣的。
(SEO是什么?这个不⽤问我吧。
呵呵~搞⽹络的不懂SEO那就~~~~)⽅法⼀:⽐如这个⽹页/soft.php/1,100,8630.html其实处理的脚本是soft.php 参数为1,100,8630相当于soft.php?a=1&b=1=100&c=8630 只不过这样的URL太难记。
搜索引擎也不喜欢。
真静态只是完全⽣成了HTML。
客户端访问的时候直接输出。
不⽤脚本解释。
在流量⾮常⼤的时候(⽐如每天有上百万的访问量的时候)会起到很好的效果。
也就是说服务器端实实在在的存在这个HTML页⾯。
当然在你⽹站的流量没有那么⼤的时候。
URL重写是最好的⽅法(个⼈观点,⼤流量的时候可以考虑负载均衡了。
同样没有关系)附URL重写的⽅法有很多种,APACHE,IISREWRITE。
甚⾄PHP脚本都可以直接处理。
⽐如上例中就是PHP脚本直接处理(该⽅法好处是⼤流量的时候直接减轻WEB伺服器的压⼒。
PS:同样也是个⼈观点:================================================下⾯以程序为例讲⼀下PHP伪静态的程序实现⽅法,其实这⽅法我之前已经有在其它论坛社区发过程序为例:/soft.php/1,100,8630.htmlCODE://利⽤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//就是这么简单了。
php伪静态规则写法
php伪静态规则写法摘要:1.PHP 伪静态规则的概念2.PHP 伪静态规则的写法3.PHP 伪静态规则的优点4.PHP 伪静态规则的注意事项正文:【1.PHP 伪静态规则的概念】PHP 伪静态规则,是指在PHP 中通过一定的编程技巧,将动态生成的URL 转换为静态URL 的一种技术。
这种技术可以让网站的URL 结构更加简洁,有利于搜索引擎的优化,提高网站的访问速度。
【2.PHP 伪静态规则的写法】要实现PHP 伪静态规则,需要进行以下几个步骤:1) 创建一个伪静态规则文件,例如:`rules.php`,在该文件中编写伪静态规则。
2) 在`rules.php`文件中,使用正则表达式来匹配URL 中的参数,并将参数映射到相应的文件或目录。
3) 使用`RewriteBase`指令设置伪静态规则的基本路径。
4) 使用`RewriteRule`指令来定义具体的伪静态规则。
例如,假设我们有一个动态页面`index.php?id=1`,我们希望将其伪静态化为`/1`,可以按照以下方式编写伪静态规则:```RewriteBase /RewriteRule ^([0-9]+)$ index.php?id=$1```【3.PHP 伪静态规则的优点】1) 提高网站访问速度:伪静态规则可以减少服务器的负担,提高网站的访问速度。
2) 优化搜索引擎:伪静态规则可以让网站的URL 结构更加简洁,有利于搜索引擎的抓取和索引。
3) 提高用户体验:伪静态规则可以让网站的URL 更加友好,提高用户的体验。
【4.PHP 伪静态规则的注意事项】1) 在编写伪静态规则时,需要注意规则的正确性,避免出现死循环或无法访问的情况。
2) 伪静态规则需要与服务器的配置相结合,确保服务器支持伪静态规则。
4种伪静态注入方法讲解
4种伪静态注⼊⽅法讲解伪静态,主要是为了隐藏传递的参数名,伪静态只是⼀种URL重写的⼿段,既然能接受参数输⼊,所以并不能防⽌注⼊。
⽬前来看,防⽌注⼊的最有效的⽅法就是使⽤LINQ。
常规的伪静态页⾯如下:,在看到之前先要确定这个页⾯是静态还是伪静态,鉴别⽅法很多。
例如关联的动态页⾯是game.php ,那么当⽤户访问后程序会⾃动转换成类似; name=Diablo 的形式,当然这部分是PHP执⾏的所以在访问时看不到。
假如name=Diablo这个参数有注⼊点但是访问的是伪静态页⾯,那么注⼊的语句其实差不多,不过如果是MYSQL数据库是不能⽤注释符的,因为注释的斜杠会被当成⽬录访问,那么就会出现问题,所以这⾥的注⼊需要把语句补全。
注⼊点检测可以⽤: and 1=’1.html与 and 1=’2.html来判断,联合查询我也试过,不过失败了。
我⽤的语句如下: and 1=2 union select 1,2… from information_schema.columns where 1=’1.html,但是测试了N次都不能成功,有可能程序的SQL语句后⾯还有其他条件,具体原因没仔细看。
所以这个时候只能⽤盲注来检测,不过因为伪静态注⼊的URL⽐较特殊,⼀般的注⼊⼯具是利⽤不了的,所以就把刺猬写的COOKIES注⼊中转器的 get⽅式注⼊的代码修改了⼀下,只要把注⼊的参数写成Diablo ,然后在提交的语句后⾯加上.html那么就可以直接放到穿⼭甲⾥注⼊了。
注⼊的速度就看中转的速度了,感觉⽤低版本的穿⼭甲效果更好,⾼版本有可能因为速度⽐较快所以在猜解字母的时候会导致部分内容检测不到。
为了更好的解释伪静态,先看看四种伪静态的php实现⽅法:代码<?php//伪静态⽅法⼀//$Php2Html_FileUrl = $_SERVER["REQUEST_URI"];echo $Php2Html_FileUrl.”<br>”;//$Php2Html_UrlString = str_replace(“?”,”",str_replace(“/”, “”, strrchr(strrchr($Php2Html_FileUrl, “/”),”?”)));echo $Php2Html_UrlString.”<br>”;//$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>”;// 1echo $_GET[action];// 2>代码<?php//伪静态⽅法⼆// localhost/php100/test.php/1/2$filename = basename($_SERVER[''SCRIPT_NAME'']);echo $_SERVER[''SCRIPT_NAME''].”<br>”;// /php100/test.phpecho $filename.”<br>”;// test.phpif(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或.htmecho $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防注⼊,主要是为了防⽌恶意写⼊后台数据库;//防注⼊函数function inject_check($sql_str){$check=eregi(‘select|insert|update|delete|\’|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile’, $sql_str);if($check){echo ” 输⼊⾮法内容”;exit();}else{return $sql_str;}}//接收传递参数后进⾏转换$_GET[type]=inject_check($_GET[type]);//之后再使⽤转换后的参数之前写的这篇关于伪静态注⼊的⽂章,写的⽐较简单基本上只算是对伪静态注⼊的⽅法和原理做了简单介绍,很多细节⽅⾯的东西都没有提到,不过要纠正⼀点,伪静态注⼊⼀样可以⽤联合查询的,只是具体的字段数要⼀个⼀个猜,这个有点⿇烦,今年主要在看⽼美的⽹站,发现很多伪静态站点都有注⼊点,只是⼤部分注⼊点都⽐较隐蔽所以在渗透的时候需要花费很多时间,这⾥就以美国某游戏站点的渗透作为实例,介绍⼀下整个渗透利⽤过程。
thinkphp如何实现伪静态
thinkphp如何实现伪静态去掉 URL 中的 index.phpThinkPHP 作为 PHP 框架,是单一入口的,那么其原始的 URL 便不是那么友好。
但 ThinkPHP 提供了各种机制来定制需要的 URL 格式,配合Apache .htaccess 文件,更是可以定制出人性化的更利于SEO 的 URL 地址来。
.htaccess文件是 Apache 服务器中的一个配置文件,它负责相关目录下的网页配置。
我们可以利用 .htaccess 文件的Rewrite 规则来隐藏掉 ThinkPHP URL 中的 index.php 文件(即入口文件),这也是ThinkPHP URL 伪静态的第一步。
例如原来的 URL 为:去掉 index.php 之后变为:如此一来,就变成了http://服务器地址/应用模块名称/操作名称[/变量参数] 的常见 URL 格式。
更改 Apache httpd.conf 配置文件提示:如果在虚拟主机商配置,请直接配置第三、四步,因为支持 .htaccess 的空间已经配置好了前面两步。
用编辑器打开Apache 配置文件httpd.conf(该文件位于Apache 安装目录Apache2conf),并按如下步骤修改,。
一、加载了 mod_rewrite.so确认加载了mod_rewrite.so 模块(将如下配置前的# 号去掉):LoadModule rewrite_module modules/mod_rewrite.so二、更改 AllowOverride 配置更改需要读取 .htaccess 文件的目录,将原来的目录注释掉:不显示index.phpRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)index.php/1 [QSA,PT,L]四、更改项目配置文件编辑项目配置文件Conf/config.php ,将URL 模式配置为2(Rewrite模式):'URL_MODEL'=>2,至此,各个配置已经完成。
php实现伪静态的方法
php实现伪静态的方法
我们为大家收集整理了关于php实现伪静态,以方便大家参考。
1.检测Apache是否支持mod_rewrite
通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里
面包括mod_rewrite”,则已经支持,不再需要继续设置。
如果没有开启mod_rewrite”,则打开目录您的apache安装目录/apache/conf/” 下的httpd.conf 文件,通过Ctrl+F查找到LoadModule rewrite_module”,将前面的”#”号删除即可。
如果没有查找到,则到LoadModule” 区域,在最后一行加入LoadModule rewrite_module ,modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。
2.让apache服务器支持.htaccess
如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让APACHE支持.htaccess 了。
打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),。
PHP伪静态隐藏URL参数
PHP伪静态隐藏URL参数伪静态隐藏URL参数是一种Web开发技术,它通过更改URL的呈现方式,使其看起来更加美观和易读,同时隐藏掉一些敏感信息或者不需要被暴露的参数。
PHP是一种广泛使用的服务器端脚本语言,提供了丰富的功能和方法来实现伪静态隐藏URL参数。
在实现伪静态隐藏URL参数之前,我们首先需要了解URL的结构和工作原理。
URL(Uniform Resource Locator)是用来定位和访问互联网上的资源的地址。
URL一般由协议、主机名、路径和查询参数组成。
例如,下面是一个包含查询参数的URL示例:``````伪静态隐藏URL参数的基本思路是将原本作为查询参数的值添加到URL的路径中,并通过重写服务器配置将其转发到相应的页面处理。
在PHP中,可以通过以下几种方法来实现伪静态隐藏URL参数:- 首先,需要启用mod_rewrite模块,确保服务器上已经安装并启用了该模块。
- 然后,在.htaccess文件中添加以下内容:```apacheRewriteEngine OnRewriteRule ^post/([0-9]+)/([a-z]+)$ post.php?id=$1&category=$2 [L]```- 首先,确保服务器上已经安装并启用了rewrite模块。
-然后,在服务器配置文件中添加以下内容:```nginxlocation /post/rewrite ^/post/([0-9]+)/([a-z]+)$ /post.php?id=$1&category=$2 last;}```3.使用PHP自定义路由:PHP也可以通过编写自定义的路由脚本来实现伪静态隐藏URL参数。
具体的实现方式如下:- 首先,将所有请求都指向一个统一的入口文件,例如index.php。
可以通过修改服务器配置文件或者使用.htaccess文件来实现这一点。
- 然后,在index.php中解析URL,并根据URL的路径来判断访问的页面和参数值。
PHP页面间参数传递的四种方式
PHP 页面间参数传递的四种方式分类: 网络文摘 2011-12-15 18:34 20269 人阅读 评论(12) 收藏 举报 phpsession 浏览器 inputaction 服务器我们定义 page01.php 和 page02.php 两个 php 文件,将 page01 中的 内容想办法传递到 page02,然后供我们继续使用。
第一种: 使用客户端浏览器的 cookie。
cookie 很容易理解,就是一个临时文件, 可以把它看成一个储藏室,浏览器在浏览的过程中记录一些信息,就暂 时存放在这里。
在 page01 中设置一个 cookie。
<?php setcookie('mycookie','自灵'); ?> 就是这么简单,我们已经创建 cookie 完毕。
我们定义了一个变量 mycookie,它的值是字符串'自灵'。
我们可以随便给 cookie 变量起名字,可以定义多个 cookie 变量。
在 page02 页面接受 cookie。
<?php $wuziling = $_COOKIE['mycookie']; echo $wuziling; ?>我们使用$_COOKIE[]提取 cookie 中的变量 mycookie,将它的值付给 $wuziling。
然后简单的输出。
好了,到这里使用 cookie 从页面之间传递参数完毕。
第二种: 使用服务器端的 session。
理解 session 是一件很容易的事情。
与 cookie 的不同在于它是服务器端的临时储藏室。
session 常被称作会话。
在 page01 中设置一个 session。
<?php session_start(); $_SESSION["temp"]=array('123','456','789'); ?> 要想使用 session, 必须启动 session。
PHP四种传参方式
PHP四种传参⽅式test1界⾯:<html><head><title>testPHP</title><meta http-equiv = "content-type" content = "text/html; charset = utf-8"/></head><body><?php//第⼀种设置传参⽅式,通过cookiesetcookie('my','yefeng');//第⼆种传参⽅式,通过设置服务器session值传递参数session_start();$_SESSION["temp"] = array('456','789');$test = "我是⼀个测试变量";><div id = "test1" style = "height:10%; border:1px solid red">//第⼀种传参⽅式</div><div id = "test2" style = "height:10%; border:1px solid red; margin-top:5%">//第⼆种传参⽅式</div><div id = "test3" style = "height:10%; border:1px solid red; margin-top:5%">//第三种传参⽅式<form action = "test2.php" method = "post"><input type = "text" name = "my"/><input type = "submit" name = "submit" value = "提交" /></form></div><div id = "test4" style = " height:10%; border:1px solid red; margin-top:5%"><a href = "<?php echo"test2.php?urlValue=".$test4?>">第四种传参⽅式</a></div></body></html>test2界⾯:<html><head><meta charset = 'utf-8' /><?php$test = $_COOKIE['my'];echo $test;echo '<br/>';session_start();for($i = 0; $i < 2; $i ++){echo $_SESSION['temp'][$i].'<br/>';}$testForm = $_POST['my'];echo "表单参数传递".$testForm;echo "第四种传参值".$_GET['urlValue']; ></head><body></body></html>。
PHP伪静态的四种方法
PHP伪静态的四种方法总结PHP伪静态的使用主要是为了隐藏传递的参数名。
今天我们向大家介绍的PHP伪静态的方法总共有四种,希望大家能够通过这四种方法进一步加深对PHP伪静态的了解。
方法一:<?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>";// 1echo $_GET[action];// 2?>方法二:<?php//伪静态方法二// localhost/php100/test.php/1/2$filename= basename($_SERVER['SCRIPT_NAME']);echo $_SERVER['SCRIPT_NAME']."<br>";///php100/test.phpecho $filename."<br>";// test.phpif(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($n av));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或.htmecho $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 中,伪静态规则通常是在Web 服务器(比如Apache 或Nginx)的配置文件中定义的。
这样的规则用于美化URL,使其看起来像静态文件路径,而实际上是由PHP 动态生成的。
以下是一些示例规则:Apache 伪静态规则(在.htaccess 文件中):简单伪静态规则:apacheCopy code<IfModule mod_rewrite.c>RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php?url=$1 [QSA,L]</IfModule>这个规则将所有非真实存在的文件和目录的请求重写到index.php 文件,并将请求的路径作为参数传递给PHP 脚本。
更复杂的伪静态规则:apacheCopy code<IfModule mod_rewrite.c>RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^article/([0-9]+)/?$ article.php?id=$1 [QSA,L]</IfModule>这个规则用于处理类似/article/123 这样的URL,将其重写到article.php 并传递文章的ID。
Nginx 伪静态规则:nginxCopy codelocation / {try_files $uri $uri/ /index.php?url=$uri&$args;}location ~ \.php$ {include snippets/fastcgi-php.conf;fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}这个配置将所有请求尝试匹配文件或目录,如果没有找到,则重写到index.php 并将URI 作为参数传递。
PHP伪静态的几种方法
PHP伪静态的几种方法伪静态并不是真正的静态,实质上也是动态页面。
以下是为大家分享的PHP伪静态的几种方法,供大家参考借鉴,欢迎浏览!首先,什么是伪静态:伪静态又名URL重写,是动态的网址看起来像静态的网址。
换句话说就是,动态网页通过重写URL方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。
另外在补充两个名词解析静态网址:纯静态HTML文档,能使用filetype:htm查询到的网页动态网址:内容存于数据库中,根据要求显示内容,URL中以?#&显示不同的参数,如:news.php?lang=&class=1&id=2 动态、静态、伪静态之间的利与弊(新)动态网址首先,动态网址目前对于Google来说,“不能被抓取”的说法是错误的,Google能够很好的处理动态网址并顺利抓取;其次“参数不能超过3个”的说法也不正确,Google能够抓取参数超过3个的动态网址,不过,为了避免URL太长应尽量减少参数。
其次,动态网址有其一定的优势,以上面所说的news.php?lang=&class=1&id=2为例,网址中的参数准确的告诉Google,此URL内容语言为、隶属于分类1、内容ID为2,更便于Google对内容的识别处理。
最后,动态网址应尽量精简,特别是会话标识(sid)和查询(query)参数,容易造成大量相同页面。
静态网址首先,静态网址具有的绝对优势是其明晰,/product/nokia/n95和/about可以很容易被理解,从而在搜索结果中可能点击量相对较高。
其次,静态网址未必就是最好的网址形式,上述动态网址中说到,动态网址能够告诉Google一些可以识别的参数,而静态网址如果文档布置不够恰当(如:过于扁平化,将HTML文档全放在根目录下)及其他因素,反而不如静态网址为Google提供的参考信息丰富。
最后,樂思蜀觉得Google此文中是否有其隐藏含义?“更新此种类型网址的页面会比较耗费时间,尤其是当信息量增长很快时,因为每一个单独的页面都必须更改编译代码。
ThinkPHP3.2伪静态配置
ThinkPHP3.2伪静态配置前台伪静态且隐藏⼊⼝⽂件就把“.htaccess⽂件” 放到指定⽂件夹下⾯如图home做伪静态并隐藏⼊⼝⽂件:Apache为例,需要在⼊⼝⽂件的同级添加.htaccess⽂件如果⽤的phpstudy:1: <IfModule mod_rewrite.c>Options +FollowSymlinks -MultiviewsRewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]// index.php 是当前的⼊⼝⽂件这⾥写的是隐藏当前⽂件夹下的⼊⼝⽂件(隐藏项⽬的⼊⼝⽂件找对路劲隐藏就对了)</IfModule>{如果index.php⽂件存放在public中,规则如下:<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ public/index.php [L,E=PATH_INFO:$1 </IfModule>}2: config的配置⽂件加如下⼏点:'URL_MODEL'=>2, //模式'URL_HTML_SUFFIX' => '.html', // 后缀'URL_DENY_SUFFIX' => 'pdf|ico|png|gif|jpg|gif', // URL禁⽌访问的后缀设置'URL_ROUTER_ON' => true, //开启路由'URL_ROUTE_RULES' => array('index'=>'Index/index',),3: 但是访问⽅式必须是⽤ U函数Httpd⽂件第⼆个修改成如下:<Directory "F:/GZJ/phpstudy/sdystar/Apache/cgi-bin">AllowOverride AllOptions NoneRequire all granted# RewriteEngine On# RewriteRule ^(.*)\.htm$ $1.html</Directory>Httpd.conf中必须开启(去掉前⾯的#)LoadModule rewrite_module modules/mod_rewrite.so。
PHP文件之间传值的四种方式说明
PHP文件之间传值的四种方式说明一. POST传值post传值是用于html的<form>表单跳转的方法,很方便使用。
例如:[html] view plain copy1.<span style="font-size:18px;"><html>2.<form action='' method=''>3.<input type='text' name='name1'>4.<input type='hidden' name='name2' value='value'>5.<input type='submit' value='提交'>6.</form>7.</html></span>form中的action填入的是跳转页面的url路径,method填入post 方法。
form表单中的提交按钮按下后,就会把form中有name的内容都传到填入的url中,可以通过$_POST['name']获取,例如:[php] view plain copy1.<span style="font-size:18px;"><?php2.$a=$_POST['name1'];3.$b=$_POST['name2'];4.></span>这里有个很方便的小技巧,在input标签中把type选为'hidden'时,这个input标签会隐藏起来,不在页面显示,但这input标签在form中,并且有name值和value值,同样会跟随提交按钮传递过去,这种隐藏标签可以传递一些不想显示出来的内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
$_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];
}
//echo '假静态:$_GET变量<br />';
print_r($_GET);
// Array ( [id|1@action|2] => [id] => 1 [action] => 2 ) echo "<br>";
$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;
echo $_SERVER['SCRIPT_NAME']."<br>";// /php100/test.php
echo $filename."<br>";// test.php
if(strtolower($filename)=='test.php'){
if(!empty($_GET[id])){
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;
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>";
//利用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)){
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
/article/22205.htm
伪静态方法一:
复制代码 代码如下:
<?php
//伪静态方法一
// localhost/php100/test.php?id|1@action|2
$Php2Html_FileUrl = $_SERVER["REQUEST_URI"];
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 )
}else die('Path:Nothing!');
?>
$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
echo "<hr>";
echo $_GET[id]."<br>";
// 1 echo $_GET[action];
// 2
?>
复制代码 代码如下:
伪静态方法二:
<?php
//伪静态方法二
// localhost/php100/test.php/1/2
$filename = basename($_SERVER['SCRIPT_NAME']);
}
?>
ห้องสมุดไป่ตู้伪静态方法三:
复制代码 代码如下:
<?php
//伪静态方法三
function mod_rewrite(){
global $_GET;
$nav=$_SERVER["REQUEST_URI"];
echo $nav."<br>";
$script_name=$_SERVER["SCRIPT_NAME"];
echo $Php2Html_FileUrl."<br>";
// /php100/test.php?id|1@action|2
$Php2Html_UrlString = str_replace("?","",str_replace("/", "", strrchr(strrchr($Php2Html_FileUrl, "/"),"?")));
$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
}
mod_rewrite();
$year=$_GET["year"];//结果为'2006'
echo $year."<br>";
$action=$_GET["action"];//结果为'_add'
echo $action;
?>
伪静态方法四:
复制代码 代码如下:
<?php
//伪静态方法四