Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Свой счетчик посещений
 
 автор: zsaz   (13.04.2008 в 16:39)   письмо автору
 
 

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

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)

Как из этих данных можно получить только браузер и его версию, и эти данные надо записать в базу для последующей обработки.
Если есть другие предложения по определению браузера, буду только рад.

   
 
 автор: mechanic   (13.04.2008 в 16:49)   письмо автору
 
   для: zsaz   (13.04.2008 в 16:39)
 

дарю http://mexxs.net/trash/counter.txt
мой первый мини-счетчик
собирает стату по браузерам, системам, поисковым запросам, реферерам и т.д.
различает поисковых ботов

   
 
 автор: cheops   (14.04.2008 в 12:24)   письмо автору
 
   для: 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';
?>

   
 
 автор: zsaz   (15.04.2008 в 10:27)   письмо автору
 
   для: cheops   (14.04.2008 в 12:24)
 

Спасибо, я почти так же сделал, только кода раза в 2-3 больше, а смысл тот же.... щас буду переделывать компактнее....

mechanic спасибо за свой счетчик... он мне очень поможет в моих начинаниях.....
а еще, я вот делал через ф-ию GETENV, а тут через переменную $_SERVER.... а какая разница???

   
 
 автор: cheops   (15.04.2008 в 12:46)   письмо автору
 
   для: zsaz   (15.04.2008 в 10:27)
 

Возможно вас также заинтересует функция get_browser().

   
 
 автор: zsaz   (15.04.2008 в 13:23)   письмо автору
 
   для: cheops   (15.04.2008 в 12:46)
 

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

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

   
 
 автор: Antohins   (16.04.2008 в 10:11)   письмо автору
 
   для: 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]."
"

  
//......................... 

?>

   
 
 автор: zsaz   (19.04.2008 в 09:13)   письмо автору
 
   для: Antohins   (16.04.2008 в 10:11)
 

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

   
 
 автор: mechanic   (19.04.2008 в 11:54)   письмо автору
 
   для: zsaz   (19.04.2008 в 09:13)
 

а не лучше ли юзать что то более профессионально написанное?:)
например http://pear.php.net/package/Image_Graph/download

   
 
 автор: zsaz   (23.04.2008 в 14:54)   письмо автору
 
   для: 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   (08.05.2008 в 17:18)   письмо автору
 
   для: zsaz   (23.04.2008 в 14:54)
 

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

   
 
 автор: mechanic   (08.05.2008 в 17:20)   письмо автору
 
   для: zsaz   (08.05.2008 в 17:18)
 

см.второй пост, а вообще 100%-но достоверно - никак

   
 
 автор: elenaki   (08.05.2008 в 18:35)   письмо автору
 
   для: mechanic   (08.05.2008 в 17:20)
 

PG - Postgre. но что это такое? кроме как "грек-почтальон" ничего на ум не приходит ;)

   
 
 автор: zsaz   (09.05.2008 в 07:42)   письмо автору
 
   для: elenaki   (08.05.2008 в 18:35)
 

Да PG тут ни при чем... вопрос уже в другом... в поисковых ботах...

   
 
 автор: Gin73   (12.05.2008 в 20:20)   письмо автору
 
   для: zsaz   (09.05.2008 в 07:42)
 

А если смотреть по IP бот это или нет?, у всех ботов свои IP-шники, их список я тут выкладывал...

   
 
 автор: mechanic   (13.05.2008 в 10:55)   письмо автору
 
   для: Gin73   (12.05.2008 в 20:20)
 

IP имеет свойство меняться, пусть даже редко, а вот имя бота в User-Agent меняться не должно

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования