使用rewrite 让php 实现类似asp.net 的IHttpModule 进行带参数js文件的参数获取
2014-01-14 14:21
1026 查看
asp.net 的IHttpModule 接口具有很大的作用,我们可以使用实现的模块进行全局的控制,但是在学习php 的过程中也想实现类似的功能,查找php 的文档,自己没有找到,
但是我们大家应该知道的是可以使用rewrite 的方式,将所用的请求,重定向到一个可以进行全局处理的页面中,以此就可以实现类似的功能了。
我进行php 开发使用的是apache 服务器,因此就直接借用了apache 服务器的rewrite功能了,步骤如下:
1.apache服务器的rewrite功能的配置如下:
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
#LoadModule reqtimeout_module modules/mod_reqtimeout.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule ssl_module modules/mod_ssl.so
将LoadModule rewrite_module modules/mod_rewrite.so前面的# 去掉即可,可以使用phpinfo 进行查看,我们的配置是否正确。
这是比较简单的,其中有一点必须注意的是,这样还是不行的,
2.我们必须将 AllowOverride None 全部改为 AllowOverride All ,这个配置的目的
可以从配置的注释中看出来
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
我们使用了.htaccess 文件进行rewrite的配置。
3.进行php 站点的创建
比较简单直接使用zend studio 记性创建即可,
大家可以看到文件夹的布局 其中.htaccess 就是我们进行rewrite的配置的,index.php是我们进行全局处理的php页面,
html5shiv.js 是其他站点,或者是我们的站点可能会引用的将要通过带参数的js 文件进行需要验证,或者进行用户判断的原始请求内容
这里大家可以随意发挥,可以设计出这样的东西就是对于已经通过验证的直接返回js 的原始内容,对于没有通过的返回错误的提示即可,
实现起来还是比较简单的。
其中.htaccess 的配置如下:
RewriteEngine On
RewriteRule ^.*$ index.php
index.php 的代码如下:
代码是比较简单的,就是获取查询的字符串,并显示,和普通的php 获取参数没有区别。
(代码在页面上显示有问题,但是在编辑器中是没事的,不太会用这个编辑器
,部分变量的命名大家应该是知道的)。
4.需要引用js 脚本的页面的代码
页面比较简单,大家可以直接存储为单独的文件即可,不需要和php 站点在一起。
5.运行引用js 的web 页面通过firebug查看的返回信息界面
从请求的js 我们返回给予调用者的信息如上所示。原始的内容应该是一段压缩了的js 脚本,通过这种方式我们就可以实现类似
asp.net 的IHttpModule 的一些功能,还是比较方便的,我配置的rewrite泛微比较的广,实际中如果只是为了,进行js 脚本的处理,可以直接
对于js 文件进行rewrite即可。以上只是自己在实现使用asp.net IHttpModule 处理js 文件参数之后,想使用php进行获取js 文件参数时的一种
尝试。如果大家在使用一些redis 或者nginx 等类似的缓存,代理软件,我们就可以设计出一个基于js文件参数的用户验证处理了。
但是我们大家应该知道的是可以使用rewrite 的方式,将所用的请求,重定向到一个可以进行全局处理的页面中,以此就可以实现类似的功能了。
我进行php 开发使用的是apache 服务器,因此就直接借用了apache 服务器的rewrite功能了,步骤如下:
1.apache服务器的rewrite功能的配置如下:
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
#LoadModule reqtimeout_module modules/mod_reqtimeout.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule ssl_module modules/mod_ssl.so
将LoadModule rewrite_module modules/mod_rewrite.so前面的# 去掉即可,可以使用phpinfo 进行查看,我们的配置是否正确。
这是比较简单的,其中有一点必须注意的是,这样还是不行的,
2.我们必须将 AllowOverride None 全部改为 AllowOverride All ,这个配置的目的
可以从配置的注释中看出来
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
我们使用了.htaccess 文件进行rewrite的配置。
3.进行php 站点的创建
比较简单直接使用zend studio 记性创建即可,
大家可以看到文件夹的布局 其中.htaccess 就是我们进行rewrite的配置的,index.php是我们进行全局处理的php页面,
html5shiv.js 是其他站点,或者是我们的站点可能会引用的将要通过带参数的js 文件进行需要验证,或者进行用户判断的原始请求内容
这里大家可以随意发挥,可以设计出这样的东西就是对于已经通过验证的直接返回js 的原始内容,对于没有通过的返回错误的提示即可,
实现起来还是比较简单的。
其中.htaccess 的配置如下:
RewriteEngine On
RewriteRule ^.*$ index.php
index.php 的代码如下:
<?php header("content-type:text/html"); $string= $_SERVER['QUERY_STRING']; $url=$_SERVER['REQUEST_URI']; $username=$_GET['username']; echo 'username is :'.$username.'<br>'; $id=$_GET['id']; echo 'id is :'.$id.'<br>'; $userid=$_GET['uid']; echo 'userid is :'.$userid.'<br>'; echo 'the query string is :'.$string.'<br>'.'the url is :'.$url.'<br>'; ?>
代码是比较简单的,就是获取查询的字符串,并显示,和普通的php 获取参数没有区别。
(代码在页面上显示有问题,但是在编辑器中是没事的,不太会用这个编辑器
,部分变量的命名大家应该是知道的)。
4.需要引用js 脚本的页面的代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> new document </title> <meta name="generator" content="editplus" /> <meta name="author" content="" /> <meta name="keywords" content="" /> <meta name="description" content="" /> <script type="text/javascript" src="http://localhost:8888/first/public/html5shiv.js?username=jack&id=8&uid=258" ></script> <script type="text/javascript" src="json.js" > </script> </head> <body> </body> </html>
页面比较简单,大家可以直接存储为单独的文件即可,不需要和php 站点在一起。
5.运行引用js 的web 页面通过firebug查看的返回信息界面
从请求的js 我们返回给予调用者的信息如上所示。原始的内容应该是一段压缩了的js 脚本,通过这种方式我们就可以实现类似
asp.net 的IHttpModule 的一些功能,还是比较方便的,我配置的rewrite泛微比较的广,实际中如果只是为了,进行js 脚本的处理,可以直接
对于js 文件进行rewrite即可。以上只是自己在实现使用asp.net IHttpModule 处理js 文件参数之后,想使用php进行获取js 文件参数时的一种
尝试。如果大家在使用一些redis 或者nginx 等类似的缓存,代理软件,我们就可以设计出一个基于js文件参数的用户验证处理了。
相关文章推荐
- 使用js 文件参数 以及IHttpModule实现服务验证asp.net 版的初步实现
- js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq
- Asp.net下使用HttpModule模拟Filter,实现权限控制
- 截获asp.net上传文件过大IIS报错的Httpmodule代码 --方便以后使用
- asp.net 使用HttpModule对全站输出的动态页面的HTML内容进行修改,不会错乱
- 在Asp.Net中使用HttpModule实现多个域名分别“绑定”到子目录
- 使用JS实现文件下载示例(asp.net)
- Asp.net下使用HttpModule模拟Filter,实现权限控制
- 在ASP.NET中重写URL 方法二:使用HttpModule实现URL重写
- 在ASP.NET中重写URL 方法三:在IIS7中使用HttpModule 实现无扩展名的URL重写
- 在Asp.Net中使用HttpModule实现多个域名分别“绑定”到子目录
- asp.net 使用HttpModule对接收到的参数值进行修改
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- Asp.net + js 异步上传文件的例子 - 使用iframe实现
- asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度
- 在Asp.Net中使用HttpModule实现多个域名分别“绑定”到子目录
- asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端