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文件的参数获取的更多相关文章

  1. 使用js 文件参数 以及IHttpModule实现服务验证asp.net 版的初步实现

    接上面的文章,上面的主要是进行html 页面自己进行处理.但是对于进行asp.net 的开发者以及其他的就显的不太好了. 我的实现方式是使用IHttpModule 进行对于用户请求的带有参数的js文件 ...

  2. ASP.NET MVC 5 默认模板的JS和CSS 是怎么加载的?

    当创建一个默认的mvc模板后,项目如下: 运行项目后,鼠标右键查看源码,在源码里看到头部和尾部都有js和css文件被引用,他们是怎么被添加进来的呢? 首先我们先看对应的view文件index.csht ...

  3. ABP(现代ASP.NET样板开发框架)系列之17、ABP应用层——参数有效性验证

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之17.ABP应用层——参数有效性验证 ABP是“ASP.NET Boilerplate Project (ASP. ...

  4. Asp.net中存储过程拖拽至dbml文件中,提示无法获得返回值

    Asp.net中存储过程拖拽至dbml文件中,提示无法获得返回值,去属性表中设置这时候会提示你去属性表中更改返回类型. 其实存储过程返回的也是一张表,只不过有时候存储过程有点复杂或者写法不规范的话不能 ...

  5. asp.net 5 中应用程序根目录及物理文件根目录的获取方式 此文已过期,不再适应rc1以后的版本

    之前看了asp.net5,小弟就试着用了用,做了个小网站练习一下,有一个小模块需要上传图片到wwwroot下的images文件夹,但是aspnet5 发生了翻天复地变化,之前获取网站根目录的的方法不再 ...

  6. win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件

    win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件 我杀过 w3wp.exe和asp.net_state的进程,重启 iis admin的服务,都还是不行. 只是把 ...

  7. 如何用asp.net MVC框架、highChart库从sql server数据库获取数据动态生成柱状图

    如何用asp.net MVC框架.highChart库从sql server数据库获取数据动态生成柱状图?效果大概是这样的,如图: 请问大侠这个这么实现呢?

  8. asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度

    介绍 使用许多小得JS.CSS文件代替一个庞大的JS或CSS文件来让代码获得更好的可维 护性,这是一个很好的实践.但这样做反过来却损失了网站的性能.虽然你应该将你的Javascript代码写在小文件中 ...

  9. asp.net网页中上传并且浏览pdf文件的实现

    本文主要讲解在asp.net中的gridview中浏览pdf文件.下面来看一下具体的实现: 第一步,使用sqlserver 创建一个数据库表. 第二步,新建一个webform,命名为uploadpdf ...

随机推荐

  1. UVA-12113 Overlapping Squares (回溯+暴力)

    题目大意:问能不能用不超过6张2x2的方纸在4x4的方格中摆出给定的图形? 题目分析:暴力枚举出P(9,6)种(最坏情况)方案即可. 代码如下: # include<iostream> # ...

  2. EBS存储附件信息

    附件三种形式 1.文件 2.url 3.文本 三种方式存储不一样 1.文件是存blob 2.url是存一个链接信息,读出来的时候,就是一个蓝色可点链接    fnd_attached_document ...

  3. 如何合理命名CSS文件——摘自网友

    有经验的网页制作者都明白,对于有多个栏目的大型网站而言,使用单一的CSS文件是不可能的.但CSS文件名如何命名对于新手来说是件容易出乱子的事.如何才能将CSS的命名做得井井有条? 坚持使用统一的CSS ...

  4. OC 继承

    一.基本概念 程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量). 在这里动物是猫类和 ...

  5. 遍历HashMap的方法(四)

    Map map = new HashMap(); for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) { Map.Entr ...

  6. hadoop kafka install (6)

    reference: http://kafka.apache.org/quickstart  http://dblab.xmu.edu.cn/blog/1096-2/ hadoop@iZuf68496 ...

  7. learning uboot source command

    reference: http://www.denx.de/wiki/DULG/UBootCmdGroupExec => help source source - run script from ...

  8. js组件的写法

    工作之中的不足,报了js培训班,因为工作加班原因缺了几天课(js组件开发),现在拾起来补补 <!doctype html> <html> <head> <me ...

  9. java 需要看的书籍

    参考链接:http://www.jianshu.com/p/454fc1e6cbe2 最近要看的有:Effective java  深入理解java 虚拟机  java 并发编程实战 (设计模式的书籍 ...

  10. Supervisor 配置过程

    Supervisor 配置过程 (转自https://www.izixia.cn/2016/01/03/supervisor-pei-zhi-guo-cheng/) 1.安装 pip install ...