2011-07-06 5 views
1

:Codeigniter 404 오류 - 어디서 왔는지 알려주는 방법? 나는 같은 반복 많은 라인이 내 로그에 예를 들어

ERROR - 2011-07-06 09:19:01 --> 404 Page Not Found --> favicon.ico 

날이 잘못된 URL을 호출 누가 찾을 수있는 방법이 있습니까? 파비콘은 단지 예일뿐입니다. 예를 들어 해킹 의도를 보여주는 몇 가지 URL이 있습니다. 다른 URL은 반복해서 반복되는 동일한 오류입니다. 기본적으로 어떤 IP가 잠재적으로 차단되는지, 그리고 나쁜 링크가있는 경우 (또는 .htaccess를 사용하여 내 서버로 리다이렉트해야하는 경우) 연락 할 사이트를 알고 싶습니다.

답변

5

, 다만 예외 클래스를 확장하고 show_404() 기능을 오버라이드 (override) :

// v2.x: core/MY_Exceptions.php 
// v1.x: libraries/MY_Exceptions.php 
class MY_Exceptions extends Exceptions { 

    /** 
    * 404 Page Not Found Handler 
    * 
    * @access private 
    * @param string 
    * @return string 
    */ 
    function show_404($page = '', $log_error = TRUE) 
    { 
     $heading = "404 Page Not Found"; 
     $message = "The page you requested was not found."; 

     // By default we log this, but allow a dev to skip it 
     if ($log_error) 
     { 
      // Custom code here, maybe logging some $_SERVER variables 
      // $_SERVER['HTTP_REFERER'] or $_SERVER['REMOTE_ADDR'] perhaps     
      // Just add whatever you want to the log message 

      log_message('error', '404 Page Not Found --> '.$page); 
     } 

     echo $this->show_error($heading, $message, 'error_404', 404); 
     exit; 
    } 
} 

당신이 favicon.ico 같은 물건을 받고 유지하는 경우, 이것은 당신의 잘못입니다 좋은 기회 거기를, 그래서 당신 그것을 들여다 볼 수도 있습니다.

  • $_SERVER['HTTP_REFERER'] 당신에게 페이지가에서 요청 된 URL을 줄 것이다, 그래서 요청이 발생한 위치 당신은 당신의 위치에 또는 다른 곳이든 볼 수 있습니다

    그냥 명확하게.
  • $_SERVER['REMOTE_ADDR']

http://php.net/manual/en/reserved.variables.server.php

간단한 예에 의해 당신에게 요청이 이루어진 IP 주소를 제공해야합니다 :

if ($log_error) 
    { 
     $msg = ''; 
     if (isset($_SERVER['HTTP_REFERER'])) 
     { 
      $msg .= 'Referer was '.$_SERVER['HTTP_REFERER'];    
     } 
     else 
     { 
      $msg .= 'Referer was not set or empty'; 
     } 
     if (isset($_SERVER['REMOTE_ADDR'])) 
     { 
      $msg .= 'IP address was '.$_SERVER['REMOTE_ADDRR'];    
     } 
     else 
     { 
      $msg .= 'Unable to track IP'; 
     } 
     log_message('error', '404 Page Not Found --> '.$page.' - '.$msg); 
    } 
+0

파비콘은 그냥 현재 해결하고있어 예입니다./admin/mysql/images (무작위적인 것들)과 하나 또는 두 번 이상 반복되는 정말로 오래되거나 이상한 것들에 대한 시도와 같은 다른 것들이 있습니다. –

+0

나는 CSS 배경 이미지가 누락 된 것처럼 바보 같은 일을 겪었 기 때문에 이전에 404 로그를 기록했다. 이 솔루션이 당신이 찾고 있던 라인을 따르지 않았습니까? –

+0

그렇지만 실제로는 리퍼러를 얻는 방법을 설명하지 않습니다. Exceptions 클래스를 오버라이드 (override) 해, 거기에 무엇인가를 실시한다고 말하고 있습니다. –

1

나는 이것을 원한다면 custom 404 page을 만들고 로그 파일에 수동으로 로깅하여 직접 기록해야한다고 생각한다. $_SERVER['REMOTE_ADDR']을 통해 PHP에서 IP 주소에 액세스 할 수 있습니다. 이 작업을 수행 할 필요를 느끼는 경우