加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_商丘站长网 (https://www.0370zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php中的过滤器,PHP过滤器

发布时间:2022-10-18 12:47:07 所属栏目:PHP教程 来源:
导读:  在java中实现过滤器,很简单,只需要在web.xml中配置如:

  iSpaceAuthcom.skylark.console.servlet.ISpaceLoginFilteriSpaceAuth/console/*

  要想在PHP中实现一个类似的功能,因为我的需求是这样的
  在java中实现过滤器,很简单,只需要在web.xml中配置如:
 
  iSpaceAuthcom.skylark.console.servlet.ISpaceLoginFilteriSpaceAuth/console/*
 
  要想在PHP中实现一个类似的功能,因为我的需求是这样的,有个开发好了的OA系统,要集成到我们的应用中,OA要对外来的数据进行过滤PHP过滤器,在给自己处理。这样就等于我必须写一个Php文件进行过滤,然后OA系统的文件都必须include该文件。这多恐怖,要重复的改好多代码,而且,代码的耦合度相当的高。
 
  查找PHP手册发现了有一些过滤的东西,
 
  一、过滤函数
 
  filter_has_var ? Checks if variable of specified type exists 检查变量是否是指定的类型
 
  filter_id ? Returns the filter ID belonging to a named filter 通过过滤器名得到过滤器的ID
 
  filter_input_array ? Gets external variables and optionally filters them
 
  filter_input ? Gets a specific external variable by name and optionally filters it
 
  filter_list ? Returns a list of all supported filters 返回支持的过滤器列表
 
  filter_var_array ? Gets multiple variables and optionally filters them 得到多个变量的值,每个变量选择一个过滤器
 
  filter_var ? Filters a variable with a specified filter 用指定的过滤器过滤变量
 
  以前没使用过这个东东,今天试用下。
 
  "convertSpace"));?>
 
  会输出 Peter is a great guy!
 
  发现PHP提供的过滤器只是对输入数据的过滤。不能像java一样,对整个项目访问进行过滤。java的过
 
  滤器还能指定过滤规则。看到这个规则让我想起了apache有个rewrite_rules的模块。让所有的访问都
 
  重定向到一个文件,那个文件就相当于一个过滤器了。我个那个文件取名filter
 
  RewriteEngine on RewriteCond %{HTTP_HOST} ^(.*)host [NC]RewriteRule ^(.*) filter.php
 
  虽然这样是可以实现。但是文件的组织方式必须是有规则的,就像单入口访问一样的。通过在filter.php通过new一个访问对象,
 
  调用一个方法来访问页面。
 
  单入口的代码
 
  但是该OA实现的不是单入口访问。这样的话访问的页面就一直是filter.php跳转之后又跳回来了。
 
  最后在发现在PHP的配置文件php.ini中可以配置 auto_prepend_file,该值的作用是在每个文件访问
 
  之前include该文件。这样include的文件就相当一个过滤器了。哈哈!该配置文件要重启服务啊,有点
 
  郁闷,那有没有改了之后不用重启服务的方法呢?当然有了,那就是采用.htaccess文件了。配置如
 
  下。
 
  RewriteEngine on php_value auto_prepend_file "D:/web/htdocs/demo1/filter.php" 不过这样有个缺点就是,当访问量大的时候,性能会受到影响。而直接在php.ini文件中改得花就不用 会了。还有个优点就是如果把.htaccess文件某个目录,只对该目录有效。那么在web目录下不是所有 的项目都会添加该文件。 下面我们来测试下。我建个项目叫demo该项目下的文件有
 
  index.php
 
  filter.php 代码
 
  test.php
 
  我们在url 中输入
 
  结果是:filter test
 
  虽然实现了但是还是java的相差太多了.java的过滤器可以实现多个,这个就不行了。还可以指定哪些访
 
  问要过滤,这个就不行了。
 
  附:
 
  1、apache rewrite模块的启用方法。
 
  在http.conf文件中找到LoadModule rewrite_module modules/mod_rewrite.so把前面的# 删除。
 
  本文原创发布php中文网,转载请注明出处,感谢您的尊重!
 

(编辑:开发网_商丘站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!