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
Форумы портала PHP.SU :: Версия для печати :: Проверка ip
Форумы портала PHP.SU » PHP » Пользовательские функции » Проверка ip

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

1. kamikadze - 11 Апреля, 2007 - 19:52:31 - перейти к сообщению
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.  


Если чего - говорите!
Кто не понял поясняю! Происходит елементарнейшая проверка наличия айпи, и если айпи найден, выводятся остальные айпи после него в строке (что нам собственно думаю и не надо)!
2. valenok - 11 Апреля, 2007 - 19:57:11 - перейти к сообщению
блокировка по юзер агенту и по 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.  
3. kamikadze - 11 Апреля, 2007 - 20:01:12 - перейти к сообщению
А вот насчёт моего варианты (ну не так он крут как твой), что там неправильного, ненужного?
4. Jakeryf - 11 Апреля, 2007 - 20:23:28 - перейти к сообщению
kamikadze пишет:

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

это работать не будет, ($sovpad == "") вот так бы работало, а лучше написать
PHP:
скопировать код в буфер обмена
  1.  
  2. if(!$sovpad) // ! - означает отрицание, если переменной $sovpad нет, то вернет true, иначе false
  3. {
  4.    echo "Вы не можете голосовать!!!"
  5. }
  6.  
5. kamikadze - 11 Апреля, 2007 - 20:27:17 - перейти к сообщению
if(!$sovpad){} ну раз уж вызвался говори всем новичкам (тем кто не понял) что это означает, кстати у тебя это получается!! (я исправил но на 1 вариант)
6. valenok - 11 Апреля, 2007 - 20:48:19 - перейти к сообщению
f(!$sovpad) проверяет значение переменной sovpad, а точнее её булев тип True | False.

Но наверное это не относится к теме, если тут чисто хранилище ф-ций
7. kamikadze - 11 Апреля, 2007 - 20:51:02 - перейти к сообщению
А мне кажется что переменная то есть!!! Просто она пустая!!
8. valenok - 11 Апреля, 2007 - 20:56:35 - перейти к сообщению
Никто её не определял, потому её не существует.
Результат функции либо возвращет True = Ура, найдено
либо false - пустое место, тоесть ничего не возвращает.
Вот у нас и либо есть переменная хрянящая значение "Ура"
лиюо есть пустое место, тоесть ничего.
9. kamikadze - 11 Апреля, 2007 - 21:06:23 - перейти к сообщению
а тохда ок!
10. kudinsasha - 08 Марта, 2009 - 10:31:30 - перейти к сообщению
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. }
11. Gogenzoed - 25 Октября, 2009 - 12:26:19 - перейти к сообщению
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.  

 

Powered by ExBB FM 1.0 RC1