簡體   English   中英

如何在CodeIgniter中獲取請求路徑?

[英]How can I get the request path in CodeIgniter?

我有一個基本控制器,記錄錯誤,我希望在日志消息中包括所有請求數據,所有標頭和請求正文。 我怎么能在CodeIgniter中做到這一點?

CodeIgniter $this->input等同於file_get_contents('php://input')包含所有Body請求(如果有的話)foo var_dump($this->input)的輸出如下所示:

object(CI_Input)[9]
  public 'ip_address' => boolean false
  public 'user_agent' => boolean false
  public '_allow_get_array' => boolean true
  public '_standardize_newlines' => boolean true
  public '_enable_xss' => boolean false
  public '_enable_csrf' => boolean false
  protected 'headers' => 
    array (size=0)
      empty
  public 'security' => &
    object(CI_Security)[8]
      protected '_xss_hash' => string '' (length=0)
      protected '_csrf_hash' => string '' (length=0)
      protected '_csrf_expire' => int 7200
      protected '_csrf_token_name' => string 'ci_csrf_token' (length=13)
      protected '_csrf_cookie_name' => string 'ci_csrf_token' (length=13)
      protected '_never_allowed_str' => 
        array (size=10)
          'document.cookie' => string '[removed]' (length=9)
          'document.write' => string '[removed]' (length=9)
          '.parentNode' => string '[removed]' (length=9)
          '.innerHTML' => string '[removed]' (length=9)
          'window.location' => string '[removed]' (length=9)
          '-moz-bindin.......//and many other data.

對於頭文件,你在PHP 5.4中使用了headers_list()的新命令。 此外,許多其他數據可以包含在CI視圖中,如: ip_address, user_agent ,last_activity

對於標題詳細信息

$this->load->library('user_agent');
$reqUserIp = $this->input->ip_address();
$userAgent = $this->agent->agent_string();
$reqHeaders = $this->input->request_headers();

你可以使用一個帖子控制器鈎子

  • application / config / config.php中啟用掛鈎。
  • 然后在application / config / hooks.php中 ;

     $hook['post_controller'] = array( 'class' => 'PostController', 'function' => 'log_it', 'filename' => 'PostController.php', 'filepath' => 'hooks', 'params' => array() ); 

  • application / hooks / PostController.php中創建一個文件

     <?php class PostController { private $ci; private $filepath; public function __construct() { $this->ci =& get_instance(); $log_path = ($this->ci->config->item('log_path') != '') ? $this->ci->config->item('log_path') : APPPATH.'logs/'; $this->filepath = $log_path.'action_log'; } public function log_it($log_message=NULL) { if ($log_message == NULL) { $log_message = date('d/m/YH:i:s')."::"; $log_message .= $this->ci->session->userdata('username')."::"; $log_message .= $this->ci->input->ip_address()."::"; $log_message .= $this->get_client_ip()."::"; $log_message .= $this->ci->router->class."::"; $log_message .= $this->ci->router->method."::"; $log_message .= uri_string()."::"; if (isset($_POST)) { foreach ($_POST as $key => $value) { $log_message .= "[$key] => $value;"; } } $log_message .= "\\r\\n"; } $fp = fopen($this->filepath, FOPEN_WRITE_CREATE); fwrite($fp, $log_message); fclose($fp); } private function get_client_ip() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { //check ip from share internet $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { //to check ip is pass from proxy $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip = $_SERVER['REMOTE_ADDR']; } return $ip; } } ?> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM