За последние 24 часа нас посетили 17594 программиста и 1590 роботов. Сейчас ищут 1383 программиста ...

Не правильно работает счетчик.

Тема в разделе "Прочие вопросы по PHP", создана пользователем Анто}{a, 11 окт 2007.

  1. Анто}{a

    Анто}{a Активный пользователь

    С нами с:
    12 апр 2007
    Сообщения:
    23
    Симпатии:
    0
    Всем привет.
    У меня такой вопрос - хотел добавить счетчик по ip-адресам, определяю ip так:
    $ip=$_SERVER['REMOTE_ADDR'];
    ну либо через getenv()
    Так вот он все входящие запросы пишет как с одного и того же ВНУТРЕННЕГО IP.
    Я так понял что видимо это какой-то ip хостера, через который идут все запросы.
    Как обойти сию несправедливость и сделать норм статистику?

    Всем заранее спасибо.
     
  2. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Анто}{a
    Это на сервере так? Пиши в техподдержку сервера, такого быть не должно...
     
  3. Анто}{a

    Анто}{a Активный пользователь

    С нами с:
    12 апр 2007
    Сообщения:
    23
    Симпатии:
    0
    на сервере лежит все. ip пишет всегда один и тот же 10.1.0.254
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    © php.net
    PHP:
    1. <?php
    2. if ($_SERVER["HTTP_X_FORWARDED_FOR"]) {
    3.    if ($_SERVER["HTTP_CLIENT_IP"]) {
    4.     $proxy = $_SERVER["HTTP_CLIENT_IP"];
    5.   } else {
    6.     $proxy = $_SERVER["REMOTE_ADDR"];
    7.   }
    8.   $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    9. } else {
    10.   if ($_SERVER["HTTP_CLIENT_IP"]) {
    11.     $ip = $_SERVER["HTTP_CLIENT_IP"];
    12.   } else {
    13.     $ip = $_SERVER["REMOTE_ADDR"];
    14.   }
    15. }
    16.  
    17. echo "Your IP $ip<BR>\n";
    18. if (isset($proxy)) {
    19.   echo "Your proxy IP is $proxy<BR>\n";
    20. }
    21. ?>
     
  5. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Анто}{a
    Возможно, админ сервера ставил прокси и где-то накосячил. Изучи содержимое массива $_SERVER, если там не окажется реального IP адреса - ничего ты не сделаешь, это кривые руки хостера.
     
  6. Anonymous

    Anonymous Guest

    Такое может быть, если стоит проксирующий сервер поверх апача — попробуй поискать IP в $_SERVER['X_REMOTE_ADDR'], $_SERVER['X_FORWARDED_FOR'] или подобных...
     
  7. Анто}{a

    Анто}{a Активный пользователь

    С нами с:
    12 апр 2007
    Сообщения:
    23
    Симпатии:
    0
    Всем спасибо! Скрипт Luge не успел попробовать, сделал $ip=getenv(HTTP_X_FORWARDED_FOR);
    вроде все работает=)
     
  8. Анто}{a

    Анто}{a Активный пользователь

    С нами с:
    12 апр 2007
    Сообщения:
    23
    Симпатии:
    0
    мне вот теперь тока интересно - выдают они одно и тоже. Всегда ли getenv(HTTP_X_FORWARDED_FOR); будет правильным или лучше все-таки скрипт Luge использовать?
     
  9. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    не всегда. Анонимные прокси не шлют HTTP_X_FORWARDED_FOR
     
  10. Анто}{a

    Анто}{a Активный пользователь

    С нами с:
    12 апр 2007
    Сообщения:
    23
    Симпатии:
    0
    ясно, спасибо! буду тогда лучше Ваш скрипт юзать
     
  11. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    :D И обращиться ко мне теперь только как «О, великий php.net, кладезь мануалов и примеров»
     
  12. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Анонимный прокси на сервере это жёстка :)
     
  13. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    HTTP_X_FORWARDED_FOR и HTTP_CLIENT_IP можно подделать и написать туда всякую каку.
     
  14. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Анто}{a лучше админа попросите всё правильно настроить.
     
  15. Анто}{a

    Анто}{a Активный пользователь

    С нами с:
    12 апр 2007
    Сообщения:
    23
    Симпатии:
    0
    Еще один вопрос можно? Можно ли как-то, узнав ip, сделать скажем средствами php или чего другого трассировку? чтоб не самому tracert вводить в cmd и смотреть а запрограммить и он автоматом делал?
     
  16. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0