gpt4 book ai didi

Codeigniter - Hook 记录 GET/POST 请求

转载 作者:行者123 更新时间:2023-12-04 10:08:56 25 4
gpt4 key购买 nike

客户要求记录所有 GET/POST 请求并将其存储 90 天以供其应用。我写了一个HOOK,它似乎记录了一些GETS/POSTS,但数据比我预期的要少。例如,在提交表单数据时,条目似乎没有放在日志中。有没有人写过类似的东西?

到目前为止,这是我的版本:

class Logging {

function __construct() {
$this->CI =& get_instance();
}

function index() {
$this->CI->load->model('Logging_m');
$this->CI->load->model('Portal_m');

//get POST and GET values for LOGGING
$post = trim(print_r($this->CI->input->post(), TRUE));
$get = trim(print_r($this->CI->input->get(), TRUE));

$this->CI->Logging_m->logPageView(array(
'portal_id' => $this->CI->Portal_m->getPortalId(),
'user_id' => (!$this->CI->User_m->getUserId() ? NULL : $this->CI->User_m->getUserId()),
'domain' => $_SERVER["SERVER_NAME"],
'page' => $_SERVER["REQUEST_URI"],
'post' => $post,
'get' => $get,
'ip' => $this->CI->input->ip_address(),
'datetime' => date('Y-m-d H:i:s')
));
}

}

这些数据存储在一个名为“Logging_m”的模型中,如下所示:
<?php 
class Logging_m extends CI_Model {

function __construct() {
parent::__construct();
}

function logPageView($data) {
$this->db->insert('port_logging', $data);
}

}

/* End of file logging_m.php */
/* Location: ./application/models/logging_m.php */

最佳答案

正如 Patrick Savalle 提到的,你应该使用钩子(Hook)。使用 post_controller_constructor钩子(Hook),这样你就可以使用所有其他 CI 的东西。

1) 在 ./application/config/config.php设置 $config['enable_hooks'] = TRUE
2) 在 ./application/config/hooks.php添加以下钩子(Hook)

$hook['post_controller_constructor'] = array(
'class' => 'Http_request_logger',
'function' => 'log_all',
'filename' => 'http_request_logger.php',
'filepath' => 'hooks',
'params' => array()
);

3) 创建文件 ./application/hooks/http_request_logger.php并添加以下代码作为示例。
if (!defined('BASEPATH'))
exit('No direct script access allowed');

class Http_request_logger {

public function log_all() {
$CI = & get_instance();
log_message('info', 'GET --> ' . var_export($CI->input->get(null), true));
log_message('info', 'POST --> ' . var_export($CI->input->post(null), true));
log_message('info', '$_SERVER -->' . var_export($_SERVER, true));
}

}

我已经对其进行了测试,它对我有用(确保您在配置文件中激活了日志记录)。

关于Codeigniter - Hook 记录 GET/POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14195291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com