使用rewrite 让php 实现类似asp.net 的IHttpModule 进行带参数js文件的参数获取
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
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文件参数的用户验证处理了。
使用rewrite 让php 实现类似asp.net 的IHttpModule 进行带参数js文件的参数获取的更多相关文章
- 使用js 文件参数 以及IHttpModule实现服务验证asp.net 版的初步实现
接上面的文章,上面的主要是进行html 页面自己进行处理.但是对于进行asp.net 的开发者以及其他的就显的不太好了. 我的实现方式是使用IHttpModule 进行对于用户请求的带有参数的js文件 ...
- ASP.NET MVC 5 默认模板的JS和CSS 是怎么加载的?
当创建一个默认的mvc模板后,项目如下: 运行项目后,鼠标右键查看源码,在源码里看到头部和尾部都有js和css文件被引用,他们是怎么被添加进来的呢? 首先我们先看对应的view文件index.csht ...
- ABP(现代ASP.NET样板开发框架)系列之17、ABP应用层——参数有效性验证
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之17.ABP应用层——参数有效性验证 ABP是“ASP.NET Boilerplate Project (ASP. ...
- Asp.net中存储过程拖拽至dbml文件中,提示无法获得返回值
Asp.net中存储过程拖拽至dbml文件中,提示无法获得返回值,去属性表中设置这时候会提示你去属性表中更改返回类型. 其实存储过程返回的也是一张表,只不过有时候存储过程有点复杂或者写法不规范的话不能 ...
- asp.net 5 中应用程序根目录及物理文件根目录的获取方式 此文已过期,不再适应rc1以后的版本
之前看了asp.net5,小弟就试着用了用,做了个小网站练习一下,有一个小模块需要上传图片到wwwroot下的images文件夹,但是aspnet5 发生了翻天复地变化,之前获取网站根目录的的方法不再 ...
- win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件
win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件 我杀过 w3wp.exe和asp.net_state的进程,重启 iis admin的服务,都还是不行. 只是把 ...
- 如何用asp.net MVC框架、highChart库从sql server数据库获取数据动态生成柱状图
如何用asp.net MVC框架.highChart库从sql server数据库获取数据动态生成柱状图?效果大概是这样的,如图: 请问大侠这个这么实现呢?
- asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度
介绍 使用许多小得JS.CSS文件代替一个庞大的JS或CSS文件来让代码获得更好的可维 护性,这是一个很好的实践.但这样做反过来却损失了网站的性能.虽然你应该将你的Javascript代码写在小文件中 ...
- asp.net网页中上传并且浏览pdf文件的实现
本文主要讲解在asp.net中的gridview中浏览pdf文件.下面来看一下具体的实现: 第一步,使用sqlserver 创建一个数据库表. 第二步,新建一个webform,命名为uploadpdf ...
随机推荐
- Tree Cutting (Hard Version) CodeForces - 1118F2 (树形DP,计数)
大意:给定树, 每个点有颜色, 一个合法的边集要满足删除这些边后, 每个连通块内颜色仅有一种, 求所有合法边集的个数 $f[x][0/1]$表示子树$x$中是否还有与$x$连通的颜色 对于每种颜色已经 ...
- bzoj1202: [HNOI2005]狡猾的商人 floyd
刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的.账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i=1,2,3...n-1,n), .当 Ai大于0时表示这个月盈 ...
- h5 plus/h5+规范使用,模块索引,教你如何去看h5+的手册
最近看了下h5+规范的官网,开始觉得晦涩难懂,确实很乱,不过这也是基于我不理解的情况,终于艰难读完了,现在来分享下心得吧,基本看完文章,按我的方法,应该可以直接上手项目. 我准备的工具 hbuilde ...
- UVA-10995 Educational Journey
The University of Calgary team qualified for the 28th ACM International Collegiate Programming Conte ...
- C# 字符串 相关操作
你或许知道你能使用String.Trim方法去除字符串的头和尾的空格,不幸运的是. 这个Trim方法不能去除字符串中间的C#空格. static void Main() { ...
- js数组去重的几种方法
1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持 ...
- prayer OJ M
这一题是一把辛酸泪啊...一个半小时ac的... 首先,考虑到如果要一条路径最小,那么肯定是没有值大于等于3的 显然如果有一个大于等于3的,那么这个数把路径分成两份,一份有k个,一个n-k-1个 那么 ...
- npm install mysql --save-dev
npm install X: 会把X包安装到node_modules目录中 不会修改package.json 之后运行npm install命令时,不会自动安装X npm install X –sav ...
- Disabling the Windows 8 UAC
http://www.computerperformance.co.uk/win8/windows8-uac-disable.htm https://msdn.microsoft.com/en-us/ ...
- Flask初级(八)flash与前台交互get post 简介
Project name :Flask_Plan templates:templates static:static 两种 HTTP 请求方法:GET 和 POST在客户机和服务器之间进行请求-响应时 ...