|
|
|
| Пишу свой счетчик посещений. На данный момент хочу написать о браузерах, т.е. с каких браузеров человек заходит на сайт.
Написал такую функцию, но результат мне ее не нравится:
function f_get_os ()
{
if ($os = getenv("HTTP_USER_AGENT"))
{
return $os;
}
}
Вот результат работы данной функции в разных браузерах:
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
Opera/9.26 (Windows NT 5.1; U; ru)
Как из этих данных можно получить только браузер и его версию, и эти данные надо записать в базу для последующей обработки.
Если есть другие предложения по определению браузера, буду только рад. | |
|
|
|
|
|
|
|
для: zsaz
(13.04.2008 в 16:39)
| | дарю http://mexxs.net/trash/counter.txt
мой первый мини-счетчик
собирает стату по браузерам, системам, поисковым запросам, реферерам и т.д.
различает поисковых ботов | |
|
|
|
|
|
|
|
для: zsaz
(13.04.2008 в 16:39)
| | Следует осуществлять разбор строки. Можно отталкиваться от следующего скрипта
<?php
$useragent = $_SERVER['HTTP_USER_AGENT'];
$browser = 'none';
// Выясняем браузер
if(strpos($useragent, "Mozilla") !== false) $browser = 'mozilla';
if(strpos($useragent, "MSIE") !== false) $browser = 'msie';
if(strpos($useragent, "MyIE") !== false) $browser = 'myie';
if(strpos($useragent, "Opera") !== false) $browser = 'opera';
if(strpos($useragent, "Netscape")!== false) $browser = 'netscape';
if(strpos($useragent, "Firefox") !== false) $browser = 'firefox';
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(14.04.2008 в 12:24)
| | Спасибо, я почти так же сделал, только кода раза в 2-3 больше, а смысл тот же.... щас буду переделывать компактнее....
mechanic спасибо за свой счетчик... он мне очень поможет в моих начинаниях.....
а еще, я вот делал через ф-ию GETENV, а тут через переменную $_SERVER.... а какая разница??? | |
|
|
|
|
|
|
|
для: zsaz
(15.04.2008 в 10:27)
| | Возможно вас также заинтересует функция get_browser(). | |
|
|
|
|
|
|
|
для: cheops
(15.04.2008 в 12:46)
| | Возможно.... только узнаю что это за функция:).... хотя по названию можно предположить....
А у меня тут вопросик возник, правильно ли я записал запрос на подсчет количества Оперы в столбце??
$opera = mysql_query("SELECT COUNT(*) FROM stat WHERE browser = 'Opera'");
вывожу <?php echo $opera; ?>
в результате получаю фигню какую-то: Resource id #9
подскажите плз, че это такое... а то встречается уже не в первый раз..... | |
|
|
|
|
|
|
|
для: zsaz
(15.04.2008 в 13:23)
| |
<?
$res = mysql_query("SELECT COUNT(*) FROM stat WHERE browser = 'Opera'");
if(mysql_num_rows($res)>0){
$Count=mysql_fetch_row($res);
echo"Count of elements is ".$Count[0]."
";
//.........................
}
?>
|
| |
|
|
|
|
|
|
|
для: Antohins
(16.04.2008 в 10:11)
| | Нашел статью построения графиков в ПХП.... http://netgen.com.ua/articles/article.php?id=38
Но она не строит, сначала ругается на размеры (но это я исправил), а потом просто выводит текст вместо графиков....
Подскажите пожалуйста, что там не так?
И может у кого-нибудь есть хороший мануал по построению графиков с примерами желательно?? | |
|
|
|
|
|
|
|
для: zsaz
(19.04.2008 в 09:13)
| | а не лучше ли юзать что то более профессионально написанное?:)
например http://pear.php.net/package/Image_Graph/download | |
|
|
|
|
|
|
|
для: mechanic
(19.04.2008 в 11:54)
| | >а не лучше ли юзать что то более профессионально написанное?:)
>например http://pear.php.net/package/Image_Graph/download
Теоретически конечно лучше, но все же мне нужен свой счетчик.....
У меня возникла проблема? нижеприведенный код считает сколько посетителей онлайн и отлично работает на MySQL'e (если вместо PG написать MYSQL), а на PG (забыл точное полное название) не хочет работать (ошибка здесь pg_query ("DELETE FROM online WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(time) > 300") or die ("Can't delete old sess"); )
Я думаю, что проблема с типами полей, т.к. в MySQL'e поле TIME имеет тип DATETIME а в PG нет такого поля... я пробывал разные типы, но так и не смог добиться работы...... подскажите плз что-нибудь....
function online () {
$ip=getenv("HTTP_X_FORWARDED_FOR");
if (empty($ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); }
# уд. старые сессии
pg_query ("DELETE FROM online WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(time) > 300") or die ("Can't delete old sess");
# проверка на присутстаие или занесение нового пользователя
$select = pg_query ("SELECT ip FROM online WHERE ip='$ip'") or die ("Can't select duble");
$tmp = pg_fetch_row ($select);
if ($ip == $tmp[0]) {
pg_query ("UPDATE online SET time=NOW() WHERE ip='$ip'") or die ("Can't update");
} else {
pg_query ("INSERT INTO online (ip,time) VALUES ('$ip',NOW())") or die ("Can't insert");
}
# считывание результатов
$select = pg_query ("SELECT COUNT(*) FROM online") or die ("Can't select result");
$tmp = pg_fetch_row ($select);
$online = $tmp[0];
return $online;
} | |
|
|
|
|
|
|
|
для: zsaz
(23.04.2008 в 14:54)
| | Можно ли как-нибудь сделать в счетчике, чтобы, если приходит бот Яндекса рамы яши яхи гугла, то он не считался за посетителя... а для этого надо определить бот ли зашел или нет... вопрос в том, как это можно определить??? | |
|
|
|
|
|
|
|
для: zsaz
(08.05.2008 в 17:18)
| | см.второй пост, а вообще 100%-но достоверно - никак | |
|
|
|
|
|
|
|
для: mechanic
(08.05.2008 в 17:20)
| | PG - Postgre. но что это такое? кроме как "грек-почтальон" ничего на ум не приходит ;) | |
|
|
|
|
|
|
|
для: elenaki
(08.05.2008 в 18:35)
| | Да PG тут ни при чем... вопрос уже в другом... в поисковых ботах... | |
|
|
|
|
|
|
|
для: zsaz
(09.05.2008 в 07:42)
| | А если смотреть по IP бот это или нет?, у всех ботов свои IP-шники, их список я тут выкладывал... | |
|
|
|
|
|
|
|
для: Gin73
(12.05.2008 в 20:20)
| | IP имеет свойство меняться, пусть даже редко, а вот имя бота в User-Agent меняться не должно | |
|
|
|