2010-07-28 5 views
1

나는 내 사이트에 오는 바보에 관한 문제를 안고 있습니다. 나는 그들의 계정을 금지 한 다음 htaccess 파일의 xxx.xxx.xxx.xxx에서 거부를 설정할 수 있습니다.htaccess에 파일을 작성하십시오.

내가 돌아 오는 것을 막기 위해 할 수있는 다른 방법이 있습니까?

이 질문의 가장 큰 이유는 내 관리자 패널에서 옵션으로 htaccess에서 거부를 작성하는 가장 좋은 방법은 무엇입니까?

감사

답변

5

또한, 단지 단지 "저리가"라는 메시지를 에코 데이터베이스에 IP 목록을로드하고 $_SERVER['REMOTE_ADDR']이 금지 목록에있는 경우, 참조 다음 PHP를 확인합니다.

Steven이 지적한 것처럼 ip2long()을 사용하여 IP를 숫자로 변환 한 다음 숫자를 사용하여 데이터베이스를 검색하면 문자열로 검색하는 것보다 훨씬 효율적입니다.

+2

이것은 귀하의 케이스에 완벽하게 맞는 솔루션입니다. 트래픽이 많은 사이트에서 자동 금지와 같이 대량의 금지를 모을 계획이라면 가득 차게 될 것 대신에'ip2long()'과'long2ip()를 사용하여 가치를 볼 수 있습니다. 데이터베이스에서 텍스트 검색. –

0

웹 사이트의 어느 부분에도 액세스 할 때 IP 확인을 수행 할 수 있습니다. 관리자 패널에 금지 된 IP 주소 목록이 데이터베이스에 저장되어 있습니까? 그래서이를 염두에두고 해결책을 제시합니다.

checkBannedIP(); 


function checkBannedIP() { 
    $ipAddresses = getBannnedIPs(); // Array('44.55.66.898', '465.22.78.365'); 
    if(in_array($_SERVER['REMOTE_ADDR'], $ipAdresses)) { 
     header("Location: www.google.com"); 
    } 
} 

데이터베이스에있는 IP의 목록 인 getBannedIPs() 함수를 작성하면됩니다.

공유 .php 파일에서이 기능을 사용하고 사이트의 모든 페이지 상단에있는 checkBannedIP()를 호출하십시오. 즉, 차단 된 사용자 IP를 google.com으로 리디렉션합니다. 사이트 리디렉션에 좌절하는 경우 사이트를 망칠 가능성이 더 커질 수 있습니다.

+1

이것은 본질적으로 누군가가 사이트를 공격 할 때마다 금지 된 모든 IP를 선택합니다 ... 이것은 엄청난 CPU 부하에 해당합니다. –

+0

그는 저장하고 싶은 IP의 양에 달려 있습니다. 상당한 양이라면 캐싱 기술이나 파일 읽기가 가능합니다. –

+0

죄송합니다. Paul 님의 솔루션에 더 많은 문제가 있습니다. 브라우저로 리다이렉션 헤더 만 보내면 스크립트를 죽이지 않습니다. 따라서 브라우저가 리디렉션을 무시하면 원하는대로 할 수 있습니다. 따라서 header() 문 다음에 "die()"문을 써야합니다. – user400850

관련 문제