Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка ip

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Всевозможные проверки IP, блок пользователей по ним и т.п.
kamikadze
Отправлено: 11 Апреля, 2007 - 19:52:31
Post Id



Склонен к самоубийству


Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. ##################
  3. # by K@mIk@dZe   #
  4. ##################
  5. $ip_db="10.1.1.2 10.100.2.1 10.128.3.17";  //пример
  6. function what_ip ($user_ip)
  7. {
  8. $sovpad=strstr($ip_db,$user_ip);
  9. if ($sovpad=="")
  10. {
  11.    echo "Вы не можете голосовать!!!"
  12. }
  13. }
  14.  


Если чего - говорите!
Кто не понял поясняю! Происходит елементарнейшая проверка наличия айпи, и если айпи найден, выводятся остальные айпи после него в строке (что нам собственно думаю и не надо)!
 
 Top
valenok Модератор
Отправлено: 11 Апреля, 2007 - 19:57:11
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




блокировка по юзер агенту и по ip

PHP:
скопировать код в буфер обмена
  1.  
  2. $blocked_ips_r = mysql_query("SELECT `ip` FROM `config_access_ip`");
  3. $blocked_agents_r = mysql_query("SELECT `agent` FROM `config_access_agent`");
  4. $Allowed = True;
  5. $Agent = True;
  6.  
  7. while($ip = mysql_fetch_row($blocked_ips_r)) {
  8.        
  9.         $bip = explode(".",$ip[0]);
  10.         $uip = explode(".",$_SERVER['REMOTE_ADDR']);
  11.  
  12.         for($i=0; $i<4; $i++){
  13.         $bip[$i] = str_replace("x","([0-9]{0,1})",$bip[$i]);
  14.         if(substr($bip[$i],-6)=='{0,1})'){$bip[$i] = substr($bip[$i],0,-6)."{1})" ;}
  15.  
  16.         if(preg_match("/".$bip[$i]."/",$uip[$i])) $Allowed = False;
  17.         }
  18.  
  19. }
  20.  
  21.  
  22. while($agent = mysql_fetch_row($blocked_agents_r)){
  23.         if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']),strtolower($agent[0]))!==False) $Agent = False;
  24.        
  25. }
  26.  
  27.  
  28.  
  29.  
  30. if(!$Allowed OR !$Agent) die();
  31.  
  32.  
  33.  




Позволяет блокировать по user_agent'у и по ip по маске: 127.xxx.2x6.11x

Таблицы выглядят так:
id | ip AND id | u_agent

Для того чтобы удобнее было потом администратировать.


\n\n(Добавление)
На этот код у меня ушло не мало времени, поэтому надо тоже гдето дописать чтото такое:

PHP:
скопировать код в буфер обмена
  1.  
  2.  ##################
  3. # by V@l3n0k   #
  4. ##################
  5.  


-----
Truly yours, Sasha.
 
My status
 Top
kamikadze
Отправлено: 11 Апреля, 2007 - 20:01:12
Post Id



Склонен к самоубийству


Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007  


Помог: 0 раз(а)




А вот насчёт моего варианты (ну не так он крут как твой), что там неправильного, ненужного?
 
 Top
Jakeryf
Отправлено: 11 Апреля, 2007 - 20:23:28
Post Id



Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Янв. 2007  
Откуда: System Virta


Помог: 0 раз(а)




kamikadze пишет:

if ($sovpad="") {
echo "Вы не можете голосовать!!!"
}

это работать не будет, ($sovpad == "") вот так бы работало, а лучше написать
PHP:
скопировать код в буфер обмена
  1.  
  2. if(!$sovpad) // ! - означает отрицание, если переменной $sovpad нет, то вернет true, иначе false
  3. {
  4.    echo "Вы не можете голосовать!!!"
  5. }
  6.  


-----
What's common between Halloween and Christmas? Every programmer knows: 31 oct = 25 dec.
 
 Top
kamikadze
Отправлено: 11 Апреля, 2007 - 20:27:17
Post Id



Склонен к самоубийству


Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007  


Помог: 0 раз(а)




if(!$sovpad){} ну раз уж вызвался говори всем новичкам (тем кто не понял) что это означает, кстати у тебя это получается!! (я исправил но на 1 вариант)
 
 Top
valenok Модератор
Отправлено: 11 Апреля, 2007 - 20:48:19
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




f(!$sovpad) проверяет значение переменной sovpad, а точнее её булев тип True | False.

Но наверное это не относится к теме, если тут чисто хранилище ф-ций


-----
Truly yours, Sasha.
 
My status
 Top
kamikadze
Отправлено: 11 Апреля, 2007 - 20:51:02
Post Id



Склонен к самоубийству


Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007  


Помог: 0 раз(а)




А мне кажется что переменная то есть!!! Просто она пустая!!
 
 Top
valenok Модератор
Отправлено: 11 Апреля, 2007 - 20:56:35
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Никто её не определял, потому её не существует.
Результат функции либо возвращет True = Ура, найдено
либо false - пустое место, тоесть ничего не возвращает.
Вот у нас и либо есть переменная хрянящая значение "Ура"
лиюо есть пустое место, тоесть ничего.


-----
Truly yours, Sasha.
 
My status
 Top
kamikadze
Отправлено: 11 Апреля, 2007 - 21:06:23
Post Id



Склонен к самоубийству


Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007  


Помог: 0 раз(а)




а тохда ок!
 
 Top
kudinsasha
Отправлено: 08 Марта, 2009 - 10:31:30
Post Id



Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. function getip(){
  3.         if(getenv('HTTP_X_FORWARDED_FOR')){
  4.                 $ip = $_SERVER['REMOTE_ADDR'];
  5.                 if(preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", getenv('HTTP_X_FORWARDED_FOR'), $ip3)){
  6.                         $ip2 = array('/^0\./', '/^127\.0\.0\.1/', '/^192\.168\..*/', '/^172\.16\..*/', '/^10..*/', '/^224..*/', '/^240..*/');
  7.                         $ip = preg_replace($ip2, $ip, $ip3[1]);
  8.                 }
  9.         }else{
  10.                 $ip = $_SERVER['REMOTE_ADDR'];
  11.         }
  12.         if($ip == ""){ $ip = "x.x.x.x"; }
  13.         return $ip;
  14. }
 
 Top
Gogenzoed
Отправлено: 25 Октября, 2009 - 12:26:19
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Июль 2009  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $ip = array($_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_X_FORWARDED_FOR'], $_ENV['HTTP_VIA']);
  3.  
  4.   $allip = count($ip);
  5.      for($a=0; $a<$allip; $a++){
  6.         $query = mysql_query("SELECT * FROM `ban_list` WHERE `ip` = '$ip[$a]'");
  7.         if(mysql_num_rows($query)!=0){
  8.         unset($_SESSION['nm'], $_SESSION['pwd']);
  9.         readfile("header.html");
  10.         die("<h1>Вы забанены!</h1><hr><div align=center>Вы забанены. Прощайте.</div>");
  11.         break;
  12.         }
  13.       }
  14.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB