[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    [​IMG]
    Сорцы дать?)
     
  2. oRb

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

    Joined:
    9 May 2008
    Messages:
    294
    Likes Received:
    582
    Reputations:
    256
    реально выложи где нить, а то мне говорят, что я твою юбку стырил. Хоть посмотрю, похожи ли они)
     
  3. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    http://rapidshare.com/files/120506001/www.rar
     
  4. oRb

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

    Joined:
    9 May 2008
    Messages:
    294
    Likes Received:
    582
    Reputations:
    256
    И всетаки они разные :)
    PHP:
    <?
    header ("Content-type: image/png");
    error_reporting(0);
    $mysql_host "";
    $mysql_database "";
    $mysql_user "";
    $mysql_password "";
    mysql_connect($mysql_host$mysql_user$mysql_password);
    mysql_select_db($mysql_database);


    $agent substr($_SERVER['HTTP_USER_AGENT'], 0);
    if(
    preg_match("!(Opera[\s\d\./]+)!msi"$agent$math))
    {
        
    $agent $math[1];
        
    $mysqlAgent "opera";
    }
    elseif(
    preg_match("!(Firefox[\s\d\./]+)!msi"$agent$math))
    {
        
    $agent $math[1];
        
    $mysqlAgent "firefox";
    }
    elseif (
    preg_match("!MSIE([\s\d\./]+)!msi"$agent$math))
    {
        
    $agent "Internet Explorer ".$math[1];
        
    $mysqlAgent "msie";
    }
    elseif (
    preg_match("!(Konqueror[\s\d\./]+)!msi"$agent$math))
    {
        
    $agent $math[1];
        
    $mysqlAgent "konqueror";
    }
    elseif (
    preg_match("!(Iceweasel[\s\d\./]+)!msi"$agent$math))
    {
        
    $agent $math[1];
        
    $mysqlAgent "iceweasel";
    }
    elseif (
    preg_match("!(Lynx[\s\d\./]+)!msi"$agent$math))
    {
        
    $agent $math[1];
        
    $mysqlAgent "lynx";
    }
    elseif (
    preg_match("!(Netscape[\s\d\./]+)!msi"$agent$math))
    {
        
    $agent $math[1];
        
    $mysqlAgent "netscape";
    }
    elseif (
    preg_match("!(Safari[\s\d\./]+)!msi"$agent$math))
    {
        
    $agent $math[1];
        
    $mysqlAgent "safari";
    }

    if(
    preg_match("!(Windows\s?[\s\w\.]+)!"$_SERVER['HTTP_USER_AGENT'], $math))
    {
        
    $os $math[1];
        if(
    $os == "Windows NT 5.0")
            
    $os "Windows 2000";
        elseif(
    $os == "Windows NT 5.01")
            
    $os "Windows 2000";
        elseif(
    $os == "Windows NT 5.1")
            
    $os "Windows XP";
        elseif(
    $os == "Windows NT 5.2")
            
    $os "Windows Server 2003";
        elseif(
    $os == "Windows NT 6.0")
            
    $os "Windows Vista";
    }
    elseif(
    preg_match("!(Mac\s?OS[\s\w\.]+)!"$_SERVER['HTTP_USER_AGENT'], $math))
        
    $os $math[1];
    elseif(
    preg_match("!(Symbian\s?OS[\s\w\./]*)!"$_SERVER['HTTP_USER_AGENT'], $math))
        
    $os $math[1];
    elseif(
    preg_match("!(Linux[\s\w\./]+)!"$_SERVER['HTTP_USER_AGENT'], $math))
        
    $os $math[1];
    elseif(
    preg_match("!(\w+BSD[\s\w\./]+)!"$_SERVER['HTTP_USER_AGENT'], $math))
        
    $os $math[1];
    elseif(
    preg_match("!(\J2ME[\s\w\./]+)!"$_SERVER['HTTP_USER_AGENT'], $math))
        
    $os $math[1];
        
    include(
    "geoip/geoipcity.inc");
    include(
    "geoip/geoipregionvars.php");
    $gi geoip_open("geoip/GeoIPCity.dat"GEOIP_MEMORY_CACHE);
    $record geoip_record_by_addr($gi$_SERVER['REMOTE_ADDR']);
    if(!
    $record->city)
        
    $record->city "-";
    if(!
    $record->country_name)
        
    $record->country_name "-";

        
    $height 42;
    $width 350;
    $im imagecreate($width,$height);

    $clblack ImageColorAllocate($im0,0,0);
    $clLightGrey  ImageColorAllocate($im222,222,222);
    $clgrey  ImageColorAllocate($im190,190,190);
    $clDarkGray ImageColorAllocate($im70,70,70);

    for(
    $i 0$i $height$i++)
    {
          
    $color ImageColorAllocate($im100-(100)/$height*$i,100-(100)/$height*$i,100-(100)/$height*$i);
        
    imageline($im,0,$i,$width-1$i$color);
    }
    for(
    $i 0$i $width+$height$i+=5)
    {
        
    imageline($im,$i-$height,0,$i$height$clDarkGray);
    }
    imagerectangle($im00$width $height 1$clgrey);
        
    $font="mini.ttf";
    imagettftext($im60310$clgrey$font"> Browser:");
    imagettftext($im607010$clLightGrey$font$agent);
    imagettftext($im60317$clgrey$font"> OS:");
    imagettftext($im607017$clLightGrey$font$os);
    imagettftext($im60324$clgrey$font"> IP:");
    imagettftext($im607024$clLightGrey$font$_SERVER['REMOTE_ADDR']);
    imagettftext($im60331$clgrey$font"> Country:");
    imagettftext($im607031$clLightGrey$font$record->country_name);
    imagettftext($im60338$clgrey$font"> City:");
    imagettftext($im607038$clLightGrey$font$record->city);
    imagettftext($im60$width-2010$clgrey$font"oRb");

    ImagePng($im);
    geoip_close($gi);

    mysql_query("INSERT INTO `useragents` SET `ip`='".$_SERVER['REMOTE_ADDR']."', `browser`='".addslashes($mysqlAgent)."', ".
                
    "`useragent`='".addslashes($_SERVER['HTTP_USER_AGENT'])."', `os`='".addslashes($os)."',".
                
    "`referer`='".addslashes($_SERVER["HTTP_REFERER"])."', `lastupdate`=NOW()".
                
    "ON DUPLICATE KEY UPDATE `browser`='".addslashes($mysqlAgent)."', ".
                
    "`useragent`='".addslashes($_SERVER['HTTP_USER_AGENT'])."', `os`='".addslashes($os)."',".
                
    "`referer`='".addslashes($_SERVER["HTTP_REFERER"])."', `lastupdate`=NOW()");
    ?>
    на хостинг не выкладываю, ибо лень 20 метров в нек кидать. geoip на сайте разработчиков.
     
  5. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Дастишь олбанишЪ?

    Пофильтруй для приличия, ибо AccessDiver рулид :)
     
  6. oRb

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

    Joined:
    9 May 2008
    Messages:
    294
    Likes Received:
    582
    Reputations:
    256
    Блек, в твоем скрипте можно дохера чего понавставлять в Http_x_forwarder_for, Http_user_agent. я думаю о результатах догадываешься ;)
     
  7. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Пасибо подрочил)))) Запись в БД у меня вырублена, +
    $ip = substr($ip, 0, 15);

    А юзер агент отфильтрован ..
    $user_agent = detect_browser($user_agent);
     
  8. oRb

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

    Joined:
    9 May 2008
    Messages:
    294
    Likes Received:
    582
    Reputations:
    256
    ахаха, рудимент после дебага остался :)

    на инсерте посматри, специльно там экранирую.
     
  9. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    До:
    '/**/UNION/**/SELECT/**/0/*
    После:
    \\\'/**/UNION/**/SELECT/**/0/*

    Запрос будет примерно такой:
    '\\\'/**/UNION/**/SELECT/**/0/*

    Это фильтрация?)) base64_encode надежней
     
  10. oRb

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

    Joined:
    9 May 2008
    Messages:
    294
    Likes Received:
    582
    Reputations:
    256
    неа)
    PHP:
    <?
    echo 
    addslashes("'/**/UNION/**/SELECT/**/0/*")
    //   \'/**/UNION/**/SELECT/**/0/*
    ?>
    ибо magic_quotes_runtime = Off
    не понял. если ты отправишь это заместо агента, к примеру, в базу все равно будет вставляться \'\\\\\'/**/UNION/**/SELECT/**/0/*. И схавает он это, не поперхнувшись.

    согласен, но в pma глядеть не удобно :)
     
  11. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Твой кусок запроса
    user_agent='
    Юзер агент (/**/ сменил на пробел для большей наглядности):
    ' UNION SELECT 0/*
    после добавления слешей:
    \' UNION SELECT 0/*
    итого твой запрос получится:
    user_agent='\' UNION SELECT 0/*

    /* - обрежет остатки запроса
     
  12. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    .. ток один хрен вывода нет и если у юзера нет привеленгии на запись то мона забить))
     
  13. oRb

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

    Joined:
    9 May 2008
    Messages:
    294
    Likes Received:
    582
    Reputations:
    256
    Специально потестил :)
    [​IMG]
    я то понимаю, что такое /*. но вот не понятно с чего ты взял, что экранирования кавычка, закроет кавычку, открытую в запросе? оО
     
    1 person likes this.
  14. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Пойду убьюсь ..
    Схавал и не подовился =\
     
  15. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Харе флудить... Тут вам не уязвимости! :)
     
    1 person likes this.
  16. Buffalon

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

    Joined:
    22 Mar 2008
    Messages:
    241
    Likes Received:
    34
    Reputations:
    8
    Думаю это тема для новичков поэтому сюда... .
    Короче я тут подумал над алгоритмом поиска и вот что я придумал.. .
    Что если строить бинарное дерево и в каждую ячейку кидать букву(и эта буква будет выглядеть в двоичной форме)>
    Тоесть если найденна буква то поиск идёт дальше=>
    И так до конца дерева... .
    >И ещо вопрос РЕально ли измерить время работы БД при n-таблиц n-пользователей обращаються к БД итд... .Но проблема будет что поле может быть и int или char итд
     
  17. Buffalon

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

    Joined:
    22 Mar 2008
    Messages:
    241
    Likes Received:
    34
    Reputations:
    8
    А можно ещо вопросец> можно узнать как реализован алгоритм md5()
    Статейку... .плиз... .
     
  18. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    http://ru.wikipedia.org/wiki/MD5
     
    _________________________
  19. AFoST

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

    Joined:
    28 May 2007
    Messages:
    588
    Likes Received:
    485
    Reputations:
    176
    Какая-нибудь глобальная переменная содержит адресную строку, к которой обращается удаленный пользователь?
    типа, я сделал запрос
    http://site.ru/index.php?id=3&id=3
    И он сохранился в какой-нибуь переменной?
     
  20. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    $_SERVER["QUERY_STRING"] выведет "id=3&id=3"
    $_SERVER["REQUEST_URI"] выведет "/index.php?id=3&id=3"
     
    1 person likes this.
Thread Status:
Not open for further replies.