Информер на Php

Discussion in 'PHP' started by SSB1981, 13 Jan 2008.

  1. SSB1981

    SSB1981 Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    108
    Likes Received:
    9
    Reputations:
    0
    Здравствуйте!​

    Решил написать информер на PHP.
    В итоге скрипт должен уметь:
    1) Определять IP
    2) Определять страну
    3) Определять OS и браузер
    4) Всё должно выводиться в графическом виде
    5) Информер должен быть распростроняемым чтобы можно было сделать на него ссылку вида: host.ru/informer.png

    Я столкнулся с некоторыми трудностями:
    1) не знаю как определить страну
    2) Не знаю как определить OS
    3) как сделать его распространяемым

    Если у кого есть готовые выложите плз!
    За дельные советы с меня +
     
  2. FeraS

    FeraS Elder - Старейшина

    Joined:
    19 Jan 2007
    Messages:
    555
    Likes Received:
    420
    Reputations:
    76
    http://lib.protoplex.ru/lib_show/251.html
    Тут какая-то инфа)
     
  3. SSB1981

    SSB1981 Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    108
    Likes Received:
    9
    Reputations:
    0
    Хочу получить что-то в этом роде
    http://2ip.ru/sbar/
    http://2ip.ru/bar/
     
  4. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    1. geoip.dat (можешь взять из любого сплойт пака)
    2. парсить $HTTP_USER_AGENT
    3. изменить .htaccess, чтобы .png обрабатывалось как php, если ты об этом
     
    1 person likes this.
  5. SSB1981

    SSB1981 Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    108
    Likes Received:
    9
    Reputations:
    0
    насчёт пункта "3" выход только такой? Я правильно понял?

    А насчёт $http_user_agent можо поподробнее
     
  6. Alekzzzander

    Alekzzzander Elder - Старейшина

    Joined:
    5 Sep 2007
    Messages:
    278
    Likes Received:
    36
    Reputations:
    0
    если я не ошибаюсь /thread20996.html это то что тебе нужно
     
    1 person likes this.
  7. SSB1981

    SSB1981 Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    108
    Likes Received:
    9
    Reputations:
    0
    СПАСИБО!
    Читаю!
     
  8. ZEXEL

    ZEXEL Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    351
    Likes Received:
    193
    Reputations:
    3
    Как напишеш етот скрипт плиз мне дай, скинь его в тему :)
     
  9. SSB1981

    SSB1981 Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    108
    Likes Received:
    9
    Reputations:
    0
  10. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Не нашёл я в той статье определения ОС, может и просмотрел но всё же вот один из способов:

    PHP:
    <?php
    $agent 
    htmlspecialchars(getenv("HTTP_USER_AGENT"));
    if (
    strpos($agent"NT 5.1") == true
    {echo
    "Windows XP";}
    elseif (
    strpos($agent"NT 5.0") == true
    {echo
    "Windows 2000(NT)";}
    else
    {echo
    "unknown";}
    ?>
    То есть ищешь соответствие ОС в юзер агенте. 5.1 это ХРюша, 5.0 это 2000 или НТ. Других кодов я не знаю, но это можно определить опытным путём или погуглив.
    А ещё почему-то никто не вспомнил про:
    PHP:
    $os htmlspecialchars(getenv("OS"));  
    echo 
    "$os";
    Но она как и браузер показывает семейство ОС а не конкретно твою. Т.е 2000 и ХР относятся к семейству NT, поэтому будет показываться Windows_NT...
     
  11. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    PHP:
    <?

    /*

    Файл : sniffer.php

    Назначение: Идентификация типа/версии браузера и платформы

    Автор: В. Дж. Гилмор

    Дата : 24 августа 2000 г.

    */

    // Функция: browser_info

    // Назначение: Возвращает тип и версию браузера

    function browser_info ($agent) {

    // Определить тип браузера

    // Искать сигнатуру Internet Explorer

    if (ereg('MSIE ([0-9].[0-9]{1,2})'$agent$version))

    $browse_type "IE";

    $browse version $version[1];

    // Искать сигнатуру Opera

    elseif (ereg'Opera ([0-9].[0-9]{1,2})'$agent$version)):

    $browse_type "Opera":

    $browse_version $version[1]:

    // Искать сигнатуру Netscape. Проверка браузера Netscape

    // *должна* выполняться после проверки Internet Explorer и Opera,

    // поскольку все эти браузеры любят сообщать имя

    // Mozilla вместе с настоящим именем.

    elseif (ereg'Mozilla/([0-9].[0-9]{1,2})'$agent$version)) :

    $browse_type "Netscape";

    $browse_version $version[1];

    // Если это не Internet Explorer, Opera или Netscape.

    // значит, мы обнаружили неизвестный браузер,

    else :

    $browse_type "Unknown";

    $browse_version "Unknown";

    endif:

    // Вернуть тип и версию браузера в виде массива

    return array ($browse_type$browse_version);

    // Конец функции browser_info

    // Функция: opsys_info

    // Назначение: Возвращает информацию об операционной системе пользователя

    function opsys_info($agent) {

    // Идентифицировать операционную систему

    // Искать сигнатуру Windows

    if ( strstr ($agent'win') ) :

    $opsys "windows";

    // Искать сигнатуру Linux

    elseif ( strstr($agent'Linux') ) :

    $opsys "Linux";

    // Искать сигнатуру UNIX

    elseif ( strstr (Sagent'Unix') ) :

    $opsys "Unix";

    // Искать сигнатуру Macintosh

    elseif ( strstr ($agent'Mac') ) :

    $opsys "Macintosh";

    // Неизвестная платформа else :

    $opsys "Unknown";

    endif;

    // Вернуть информацию об операционной системе

    return $opsys;

    // Конец функции opsys_info

    // Сохранить возвращаемый массив в списке

    list ($browse_type$browse_version) = browser_info ($HTTP_USER_AGENT); Soperating_sys opsysjnfo ($HTTP_USER_AGENT);

    print 
    "Browser Type: $browse_type <br>";

    print 
    "Browser Version: $browse_version <br>";

    print 
    "Operating System: $operating_sys <br>":

    ?>
     
    1 person likes this.
  12. Alekzzzander

    Alekzzzander Elder - Старейшина

    Joined:
    5 Sep 2007
    Messages:
    278
    Likes Received:
    36
    Reputations:
    0
    если ошибаюсь поправьте но вроде так тоже возможно
    PHP:
    $user_agent $HTTP_USER_AGENT;

    function 
    detect_os()
    {
    global 
    $user_agent;

            
        if     (
    strstr($user_agent"Windows 95"))     $os "Windows 95";
        elseif (
    strstr($user_agent"Windows NT 4"))   $os "Windows NT 4";
        elseif (
    strstr($user_agent"Windows 98"))     $os "Windows 98";
        elseif (
    strstr($user_agent"Win 9x 4.9"))     $os "Windows ME";
        elseif (
    strstr($user_agent"Windows NT 5.0")) $os "Windows 2000";
        elseif (
    strstr($user_agent"Windows NT 5.1")) $os "Windows XP";
        elseif (
    strstr($user_agent"Windows NT 5.2")) $os "Windows 2003";
        elseif (
    strstr($user_agent"Windows NT 6.0")) $os "Windows Vista";
        elseif (
    strstr($user_agent"Linux"))          $os "Linux";
        elseif (
    strstr($user_agent"Mac OS"))         $os "Mac OS";
        else                                           
    $os "Other";
        
        return 
    $os;
    }


    function 
    detect_browser()
    {
        global 
    $user_agent;        
        if (
    eregi("(opera) ([0-9]{1,2}.[0-9]{1,3}){0,1}"$user_agent$bv) or 
            
    eregi("(opera/)([0-9]{1,2}.[0-9]{1,3}){0,1}"$user_agent$bv))
            {
                
    $type    "Opera";
                
    $browser "Opera" " " $bv[2];
            }
            elseif (
    eregi("(konqueror)/([0-9]{1,2}.[0-9]{1,3})"$user_agent$bv))
            {
                
    $type    "Konqueror";
                
    $browser "Konqueror" " " $bv[2];
            }
            elseif (
    eregi("(lynx)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})"$user_agent$bv))
            {
                
    $type    "Lynx";
                
    $browser "Lynx" " " $bv[2];
            }
            elseif (
    eregi("(links) \\(([0-9]{1,2}.[0-9]{1,3})"$user_agent$bv))
            {
                
    $type    "Links";
                
    $browser "Links" " " $bv[2];
            }
            elseif (
    eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})"$user_agent$bv))
            {
                
    $type    "Internet Explorer";
                
    $browser "Internet Explorer" " " $bv[2];
            }
            elseif (
    eregi("(netscape6)/(6.[0-9]{1,3})"$user_agent$bv))
            {
                
    $type    "Netscape";
                
    $browser "Netscape" " " $bv[2];
            }
            elseif (
    eregi("(firefox)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})"$user_agent$bv) or
                    
    eregi("(firefox)/([0-9]{1,2}.[0-9]{1,2})"$user_agent$bv))
            {
                
    $type    "Firefox";
                
    $browser "Firefox" " " $bv[2];
            }        
            elseif (
    eregi("(mozilla)/([0-9]{1,2}.[0-9]{1,3})"$user_agent$bv))
            {
                
    $type    "Mozilla";
                
    $browser "Mozilla" " " $bv[2];
            }
            else
            {
                
    $type    "Other";
                
    $browser "Other";
            }    
        
        return 
    $browser;
    }

    function 
    win_uni ($in) {
      
    $in convert_cyr_string($in ,"w","i");
      
    $out "";
      for (
    $i=0$i strlen($in); $i++) {
        
    $char ord($in[$i]);
        
    $out .= ($char 175)?"&#".(1040+($char-176)).";":$in[$i];
      }
      return 
    $out;
    }
     
    2 people like this.
  13. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    И чего вы юзаете $http_user_agent, а не $_server['http_user_agent']? И не забываейте, что юзер-агента можно подделать
     
    1 person likes this.
  14. Alekzzzander

    Alekzzzander Elder - Старейшина

    Joined:
    5 Sep 2007
    Messages:
    278
    Likes Received:
    36
    Reputations:
    0
    если хорошо постараться то можно подделать всё)))
     
  15. SSB1981

    SSB1981 Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    108
    Likes Received:
    9
    Reputations:
    0
    Вот написал:
    http://www.ssb1981.sid.su/Files/download.php?file=0
    Информер показывает: IP, Браузер, Windows
    Информер распространяемый!
    Было задумано 5 пунктов, из которых 4 осуществлены.

    Пример:

    [​IMG]
     
    #15 SSB1981, 27 Jan 2008
    Last edited: 15 Feb 2008
  16. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Это все уже есть в паблике...
    Не видел скрипта определения города(!)
     
  17. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Isis, скрипт маднета определяет - http://madnet.name/tools/userinfo/
     
    1 person likes this.
  18. SSB1981

    SSB1981 Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    108
    Likes Received:
    9
    Reputations:
    0
    Определение города заработает в ближайшеее время, причём если пользователь из России то будет отображаться город, край и регион.