Счетчик посещений

zsaz

Новичок
Счетчик посещений

Пишу свой счетчик посещений. На данный момент хочу написать о браузерах, т.е. с каких браузеров человек заходит на сайт.
Написал такую функцию, но результат мне ее не нравится:

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

Новичок
я в принципе придумал уже как это можно реализовать, т.е. я переменной присваиваю полностью эту строку, а затем в ней ищу имена браузеров функцией strpos.... Вот только проблемка, как узнать, пустая переменная или нет... если она нашла, что я просил, то все нормально, выводит число... а если не нашла, то ничего не выводит, но существует (пустая короче).... так вот как определить пустая она или нет??
 

Dovg

Продвинутый новичок
а вы мануал читать не пробовали?
там же ясно написано что возвращает strpos, если ничего не нашла.
Это кстати не "пустота".
 

zsaz

Новичок
А у меня тут вопросик возник, правильно ли я записал запрос на подсчет количества Оперы в столбце??
$opera = mysql_query("SELECT COUNT(*) FROM stat WHERE browser = 'Opera'");
вывожу <?php echo $opera; ?>

в результате получаю фигню какую-то: Resource id #9
подскажите плз, че это такое... а то встречается уже не в первый раз.....
 

Dovg

Продвинутый новичок
Почитай плз мануал
на предмет того, что возвращает функция mysql_query

-~{}~ 15.04.08 16:32:

Блин
по php такой хороший мануал на офф. сайте (я бы даже сказал лучший ;)
почему его никто не читает? там же ответы на все вопросы есть
 

zsaz

Новичок
Нашел статью построения графиков в ПХП.... http://netgen.com.ua/articles/article.php?id=38
Но она не строит, сначала ругается на размеры (но это я исправил), а потом просто выводит текст вместо графиков....
Подскажите пожалуйста, что там не так?
И может у кого-нибудь есть хороший мануал по построению графиков с примерами желательно??

-~{}~ 23.04.08 14:49:

>а не лучше ли юзать что то более профессионально написанное?:)
>например 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;
}

-~{}~ 08.05.08 17:11:

Можно ли как-нибудь сделать в счетчике, чтобы, если приходит бот Яндекса рамы яши яхи гугла, то он не считался за посетителя... а для этого надо определить бот ли зашел или нет... вопрос в том, как это можно определить???
 

zsaz

Новичок
Не совсем понял как эта функция связана с ботами??
 
Сверху