zoukankan      html  css  js  c++  java
  • 使用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文件参数的用户验证处理了。

  • 相关阅读:
    DelphiXE
    Delphi_检查exe文件是否是"随机基址"
    Delphi_按字节比较两个文件
    HTTP 头部
    NumberFormat usage
    tomcat 配置
    android 与JS之间的交互
    离线安装SDK
    Android SDK更新 Connection to http://dl-ssl.google.com refused
    自定义圆形图片
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/3518958.html
Copyright © 2011-2022 走看看