Advertisement
DiM-ko

htaccess-ban.php

Jun 17th, 2013
438
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.32 KB | None | 0 0
  1. <?
  2. // PHP-скрипт автоматического бана по IP в .htaccess при посещении запрещенного URL
  3. // от Дмитрия 'DiM' (www.dimlife.com)
  4. // Инструкция по использованию скрипта http://dimlife.com/php:htaccess-ban
  5.  
  6. $tomail = 'admin@dimlife.com'; // email владельца сайта
  7. $frommail = 'robot@dimlife.com'; // условный email отправителя
  8. $date = date('d.m.Y H:i:s');
  9. $ip = $_SERVER['REMOTE_ADDR'];
  10. $url = $_SERVER['REQUEST_URI'];
  11. $useragent = $_SERVER['HTTP_USER_AGENT'];
  12. $refer = $_SERVER['HTTP_REFERER'];
  13. $ban = "# ".$date." ".$url." \r\nDeny from ".$ip." \r\n"; // эта строка запишется в .htaccess
  14. $htaccess = $_SERVER['DOCUMENT_ROOT'].'/.htaccess'; // путь до .htaccess
  15. $str = file_get_contents($htaccess);
  16. $fn = 'Deny from '.$ip;
  17. $pos = strpos($str,$fn);
  18.  
  19. // если IP-адрес не забанен в .htaccess
  20. if ($pos === false)
  21. {
  22.   $o = @fopen($htaccess, "a+"); // открывает .htaccess
  23.   $write = @fputs($o, $ban); // пишет строку о бане
  24.   // уведомление на email админа сайта
  25.   mail (
  26.          $tomail,
  27.          'Новый бан! ('.$url.')',
  28.          'дата: '.$date.' | IP: '.$ip."\r\n".'юзерагент: '.$useragent."\r\n".'Запрос: '.$url.' | реферал: '.$refer,
  29.          'From:'.$frommail
  30.        );
  31.   fclose($o);
  32.   // показывает нарушителю страницу с уведомлением о бане
  33.   echo '
  34.         <html><head></head><body style="background:#363636;font-family:Century Gothic;color:#CFCFCF">
  35.         <div style="position:fixed;top:25%;left:25%;width:400px;height:400px;top:expression((document.documentElement.scrollTop + screen.height/2 - 200) + \'px\');margin-left:-200px;"><span style="font-size:300px">БАН!</span></div>
  36.         </body></html>
  37.       ';
  38.  
  39. }
  40.  
  41. // если IP-адрес уже забанен в .htaccess
  42. else
  43. {
  44.   // только уведомление на email админа сайта
  45.   mail (
  46.          $tomail,
  47.          'Уже забанен ('.$ip.')',
  48.          'дата: '.$date.' | IP: '.$ip."\r\n".'юзерагент: '.$useragent."\r\n".'Запрос: '.$url.' | реферал: '.$refer,
  49.          'From:'.$frommail
  50.        );
  51. }
  52. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement