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. melovoi - 12 Апреля, 2007 - 13:59:09 - перейти к сообщению
Функция вернет реальный ip посетителя сайта, если прокси transparent
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. function getip()
  4. {
  5.   if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown"))
  6.     $ip = getenv("HTTP_CLIENT_IP");
  7.  
  8.   elseif (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
  9.     $ip = getenv("HTTP_X_FORWARDED_FOR");
  10.  
  11.   elseif (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
  12.     $ip = getenv("REMOTE_ADDR");
  13.  
  14.   elseif (!empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
  15.     $ip = $_SERVER['REMOTE_ADDR'];
  16.  
  17.   else
  18.     $ip = "unknown";
  19.  
  20.   return($ip);
  21. }
  22. ?>
2. valenok - 23 Апреля, 2007 - 19:11:44 - перейти к сообщению
Задача:
Вася и Петя сидят с одного IP и один через прокси А второй через Б,
Надо чтоб счетчик засчитал Васю и Петю как разных пользователей

PHP:
скопировать код в буфер обмена
  1.  <?
  2. // table counter
  3. // id | ip | proxy | visits | time  
  4.  
  5. if($_SERVER['HTTP_X_FORWARDED_FOR'])
  6.          $ch = visit($_SERVER['HTTP_X_FORWARDED_FOR'],$_SERVER['REMOTE_ADDR']);
  7. else $ch = visit($_SERVER['REMOTE_ADDR'],'');
  8.  
  9.  
  10. function visit($ip,$proxy) {
  11.                
  12.         $q = "SELECT `id` FROM `counter` WHERE `ip`='".$ip."'";
  13.         if(!empty($proxy)) $q.= " AND `proxy`='".$proxy."'";
  14.         $counted = mysql_query($q);
  15.         if(mysql_num_rows($counted)<1) mysql_query("INSERT INTO `counter` VALUES ('','".$ip."','".$proxy."','1',NOW())");
  16.         else mysql_query("UPDATE `counter` SET `visits`=`visits`+1 WHERE `id`=".mysql_result($counted,0,0));
  17. }
  18.  
3. -SCHATTEN- - 23 Апреля, 2007 - 21:20:39 - перейти к сообщению
Пасиб, то что надо было.
4. EuGen - 28 Августа, 2007 - 16:03:09 - перейти к сообщению
А если прокси - `злой` .. и не отдает HTTP_X_FORWARDED_FOR .. еще реально что то сделать или уже нет?
5. valenok - 28 Августа, 2007 - 16:54:09 - перейти к сообщению
помолиться / подобрать
6. EuGen - 28 Августа, 2007 - 17:37:49 - перейти к сообщению
подобрать - это есть какая то возможность или это относится к серии "помолиться" ?
Я просто не смог придумать как в этом случае найти адрес..
7. valenok - 28 Августа, 2007 - 18:23:46 - перейти к сообщению
никак, иначе смысл прокси как объяснить

 

Powered by ExBB FM 1.0 RC1