我想修剪每个input-data (get,post,cookie,session and so on)
。
我正在尝试构建一个hook
文件,但不知道何时运行它,因为我想在控制器执行之前将所有已修剪的输入数据传递给控制器。
Codeigniter文档说:
pre_system
在系统执行期间很早就打电话。只有
此时已加载基准和钩子类。没有路由 或其他过程已经发生。
pre_controller
立即致电
在调用任何控制器之前。所有基类, 路由和安全检查已经完成。
post_controller_constructor
在控制器后立即调用
是实例化的,但在任何方法调用发生之前。
post_controller
控制器完全
后立即调用执行。
我必须使用哪些? pre_controller?
答案 0 :(得分:4)
不,你没有使用pre_controller
。请改用pre_system
。
您希望尽早修改输入变量,否则Codeigniters input class将对您起作用(取决于配置,但如果您不想要pre_system
是安全的方法从config.php context内获取代码。
对于递归修剪需求,应该这样做:array_walk_recursive(array(&$_SERVER, &$_COOKIE, &$_GET, &$_POST), 'trim');
因为那些输入数组只在其叶节点处包含字符串值。但是要注意做一般事情,这通常会导致副作用,例如CI XSS过滤。如果您正在寻找特定于CI的解决方案,另一种方法可能是扩展输入类。