在java中实现过滤器,很简单,只需要在web.xml中配置如:
<filter> <filter-name>iSpaceAuth</filter-name> <filter-class> com.skylark.console.servlet.ISpaceLoginFilter </filter-class></filter><filter-mapping> <filter-name>iSpaceAuth</filter-name> <url-pattern>/console/*</url-pattern></filter-mapping>
要想在PHP中实现一个类似的功能,因为我的需求是这样的,有个开发好了的OA系统,要集成到我们的应用中,OA要对外来的数据进行过滤,在给自己处理。这样就等于我必须写一个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 用指定的过滤器过滤变量
以前没使用过这个东东,今天试用下。
<?phpfunction convertSpace($string){ return str_replace("_", " ", $string);}$string = "Peter_is_a_great_guy!";echo filter_var($string, FILTER_CALLBACK,array("options"=>"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一个访问对象,
调用一个方法来访问页面。
单入口的代码
<?phprequire_once './config.php';$act = isset($_REQUEST['act']) ? trim($_REQUEST['act']) : 'index';$ctl = isset($_REQUEST['ctl']) ? trim($_REQUEST['ctl']) : 'default';$ctl = strtolower($ctl);$act = strtolower($act);require_once ROOTPATH.'/'.'lib'.'/controller/'.$ctl.'.php';$ctl = ucfirst($ctl).'Controller';$act = $act.'Action';$app = new $ctl($act);
但是该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
<?phpecho "index.php \n";
filter.php 代码
<?phpecho 'filter'."\n";$fileName = pathinfo($_SERVER['SCRIPT_FILENAME']);if($fileName['filename'] == 'index'){ header("location:".'./test.php');}
test.php
<?phpecho 'test';
我们在url 中输入 http://localhost/demo/index.php
结果是:filter test
虽然实现了但是还是java的相差太多了.java的过滤器可以实现多个,这个就不行了。还可以指定哪些访
问要过滤,这个就不行了。
附:
1、apache rewrite模块的启用方法。
在http.conf文件中找到LoadModule rewrite_module modules/mod_rewrite.so把前面的# 删除。

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

PHP中使用clone关键字创建对象副本,并通过\_\_clone魔法方法定制克隆行为。1.使用clone关键字进行浅拷贝,克隆对象的属性但不克隆对象属性内的对象。2.通过\_\_clone方法可以深拷贝嵌套对象,避免浅拷贝问题。3.注意避免克隆中的循环引用和性能问题,优化克隆操作以提高效率。

PHP适用于Web开发和内容管理系统,Python适合数据科学、机器学习和自动化脚本。1.PHP在构建快速、可扩展的网站和应用程序方面表现出色,常用于WordPress等CMS。2.Python在数据科学和机器学习领域表现卓越,拥有丰富的库如NumPy和TensorFlow。

HTTP缓存头的关键玩家包括Cache-Control、ETag和Last-Modified。1.Cache-Control用于控制缓存策略,示例:Cache-Control:max-age=3600,public。2.ETag通过唯一标识符验证资源变化,示例:ETag:"686897696a7c876b7e"。3.Last-Modified指示资源最后修改时间,示例:Last-Modified:Wed,21Oct201507:28:00GMT。

在PHP中,应使用password_hash和password_verify函数实现安全的密码哈希处理,不应使用MD5或SHA1。1)password_hash生成包含盐值的哈希,增强安全性。2)password_verify验证密码,通过比较哈希值确保安全。3)MD5和SHA1易受攻击且缺乏盐值,不适合现代密码安全。

PHP是一种服务器端脚本语言,用于动态网页开发和服务器端应用程序。1.PHP是一种解释型语言,无需编译,适合快速开发。2.PHP代码嵌入HTML中,易于网页开发。3.PHP处理服务器端逻辑,生成HTML输出,支持用户交互和数据处理。4.PHP可与数据库交互,处理表单提交,执行服务器端任务。

PHP在过去几十年中塑造了网络,并将继续在Web开发中扮演重要角色。1)PHP起源于1994年,因其易用性和与MySQL的无缝集成成为开发者首选。2)其核心功能包括生成动态内容和与数据库的集成,使得网站能够实时更新和个性化展示。3)PHP的广泛应用和生态系统推动了其长期影响,但也面临版本更新和安全性挑战。4)近年来的性能改进,如PHP7的发布,使其能与现代语言竞争。5)未来,PHP需应对容器化、微服务等新挑战,但其灵活性和活跃社区使其具备适应能力。

PHP的核心优势包括易于学习、强大的web开发支持、丰富的库和框架、高性能和可扩展性、跨平台兼容性以及成本效益高。1)易于学习和使用,适合初学者;2)与web服务器集成好,支持多种数据库;3)拥有如Laravel等强大框架;4)通过优化可实现高性能;5)支持多种操作系统;6)开源,降低开发成本。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

WebStorm Mac版
好用的JavaScript开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

禅工作室 13.0.1
功能强大的PHP集成开发环境