4

我想修剪每一个input-data (get,post,cookie,session and so on).

我正在尝试构建一个hook文件,但不知道什么时候让它运行,因为我想在控制器执行之前将所有已经修剪的输入数据传递给控制器​​。

Codeigniter 文档说:

pre_system

在系统执行期间很早就被调用。只有

此时已经加载了基准和钩子类。没有发生路由或其他过程。

预控制器

立即致电

在调用任何控制器之前。所有基类、路由和安全检查都已完成。

post_controller_constructor

在您的控制器之后立即调用

被实例化,但在任何方法调用发生之前。

post_controller

在您的控制器完全运行后立即调用

执行。

我必须使用哪些?预控制器?

4

1 回答 1

4

不,你不使用pre_controller它。改为使用pre_system

您希望尽早修改输入变量,否则Codeigniters 输入类将对您不利(取决于配置,但pre_system如果您不想从config.php上下文中执行代码,这是一种安全的方式)。

对于您的递归修剪需求,应该这样做:array_walk_recursive(array(&$_SERVER, &$_COOKIE, &$_GET, &$_POST), 'trim');因为这些输入数组仅在其叶节点处包含字符串值。然而,在做一般事情时要小心,这通常是副作用的原因,比如 CI XSS 过滤。如果您正在寻找 CI 特定的解决方案,另一种选择可能是扩展输入类。

于 2013-07-07T09:05:30.330 回答