И всетаки они разные 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($im, 0,0,0); $clLightGrey = ImageColorAllocate($im, 222,222,222); $clgrey = ImageColorAllocate($im, 190,190,190); $clDarkGray = ImageColorAllocate($im, 70,70,70); for($i = 0; $i < $height; $i++) { $color = ImageColorAllocate($im, 100-(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($im, 0, 0, $width - 1 , $height - 1, $clgrey); $font="mini.ttf"; imagettftext($im, 6, 0, 3, 10, $clgrey, $font, "> Browser:"); imagettftext($im, 6, 0, 70, 10, $clLightGrey, $font, $agent); imagettftext($im, 6, 0, 3, 17, $clgrey, $font, "> OS:"); imagettftext($im, 6, 0, 70, 17, $clLightGrey, $font, $os); imagettftext($im, 6, 0, 3, 24, $clgrey, $font, "> IP:"); imagettftext($im, 6, 0, 70, 24, $clLightGrey, $font, $_SERVER['REMOTE_ADDR']); imagettftext($im, 6, 0, 3, 31, $clgrey, $font, "> Country:"); imagettftext($im, 6, 0, 70, 31, $clLightGrey, $font, $record->country_name); imagettftext($im, 6, 0, 3, 38, $clgrey, $font, "> City:"); imagettftext($im, 6, 0, 70, 38, $clLightGrey, $font, $record->city); imagettftext($im, 6, 0, $width-20, 10, $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 на сайте разработчиков.
Блек, в твоем скрипте можно дохера чего понавставлять в Http_x_forwarder_for, Http_user_agent. я думаю о результатах догадываешься
Пасибо подрочил)))) Запись в БД у меня вырублена, + $ip = substr($ip, 0, 15); А юзер агент отфильтрован .. $user_agent = detect_browser($user_agent);
До: '/**/UNION/**/SELECT/**/0/* После: \\\'/**/UNION/**/SELECT/**/0/* Запрос будет примерно такой: '\\\'/**/UNION/**/SELECT/**/0/* Это фильтрация?)) base64_encode надежней
неа) PHP: <? echo addslashes("'/**/UNION/**/SELECT/**/0/*") // \'/**/UNION/**/SELECT/**/0/* ?> ибо magic_quotes_runtime = Off не понял. если ты отправишь это заместо агента, к примеру, в базу все равно будет вставляться \'\\\\\'/**/UNION/**/SELECT/**/0/*. И схавает он это, не поперхнувшись. согласен, но в pma глядеть не удобно
Твой кусок запроса user_agent=' Юзер агент (/**/ сменил на пробел для большей наглядности): ' UNION SELECT 0/* после добавления слешей: \' UNION SELECT 0/* итого твой запрос получится: user_agent='\' UNION SELECT 0/* /* - обрежет остатки запроса
Специально потестил я то понимаю, что такое /*. но вот не понятно с чего ты взял, что экранирования кавычка, закроет кавычку, открытую в запросе? оО
Думаю это тема для новичков поэтому сюда... . Короче я тут подумал над алгоритмом поиска и вот что я придумал.. . Что если строить бинарное дерево и в каждую ячейку кидать букву(и эта буква будет выглядеть в двоичной форме)> Тоесть если найденна буква то поиск идёт дальше=> И так до конца дерева... . >И ещо вопрос РЕально ли измерить время работы БД при n-таблиц n-пользователей обращаються к БД итд... .Но проблема будет что поле может быть и int или char итд
Какая-нибудь глобальная переменная содержит адресную строку, к которой обращается удаленный пользователь? типа, я сделал запрос http://site.ru/index.php?id=3&id=3 И он сохранился в какой-нибуь переменной?