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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Есть определитель того сколько чел. на сайте. Надо переделать!

Сообщения:  [1-10]   [11-14] 

 
 автор: dima_s_d_s   (05.11.2006 в 16:32)   письмо автору
 
   для: NIK   (05.11.2006 в 10:17)
 

Всё верно!

   
 
 автор: NIK   (05.11.2006 в 10:17)   письмо автору
 
   для: dima_s_d_s   (05.11.2006 в 01:03)
 

online_ip идёт как id? тогда да

   
 
 автор: dima_s_d_s   (05.11.2006 в 01:03)   письмо автору
 
   для: NIK   (04.11.2006 в 14:13)
 

Правельно я создал бд?


CREATE TABLE `online` (
  `online_ip` int(11) unsigned NOT NULL auto_increment,
  `ip` text,
  `bot` text,
  `last_visit` text,
  PRIMARY KEY  (`online_ip`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

   
 
 автор: NIK   (04.11.2006 в 14:13)   письмо автору
 
   для: dima_s_d_s   (04.11.2006 в 12:09)
 

пробуй пробуй и ещё раз пробуй!

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

'id', 'ip', 'bot', 'last_visit'


Далее проверяй, заходил ли уже пользователь на сайт. Для этого ищешь его IP в твоей таблице. Если этого IP нет, заносишь его. Если IP уже есть, обновляешь информацию.

$ip = $_SERVER['REMOTE_ADDR'];  // ip зашедшего
$query_ip = mysql_query("SELECT * FROM online WHERE ip = '$ip' LIMIT 1");
if (mysql_num_rows($query_ip) < 1) {  // проверяем, заходил ли уже посетитель на сайт
  # Если посетитель зашёл впервые, определяем бот ли он и заносим его в БД
  if ( strstr($_SERVER[’HTTP_USER_AGENT’], ‘Yandex’) ) { $bot=’Yandex’;}
elseif ( strstr($_SERVER[’HTTP_USER_AGENT’], ‘Googlebot’) ) {$bot=’Google’;}
elseif ( strstr($_SERVER[’HTTP_USER_AGENT’], ‘Slurp’) ) {$bot=’Slurp’;}
elseif ( strstr($_SERVER[’HTTP_USER_AGENT’], ‘WebCrawler’) ) {$bot=’WebCrawler’;}
elseif ( strstr($_SERVER[’HTTP_USER_AGENT’], ‘ZyBorg’) ) {$bot=’ZyBorg’;}
elseif ( strstr($_SERVER[’HTTP_USER_AGENT’], ‘google’) ) {$bot=’Google’;}
elseif ( strstr($_SERVER[’HTTP_USER_AGENT’], ’scooter’) ) {$bot=’AltaVista’;}
elseif ( strstr($_SERVER[’HTTP_USER_AGENT’], ’stack’) ) {$bot=’Rambler’;}
elseif ( strstr($_SERVER[’HTTP_USER_AGENT’], ‘aport’) ) {$bot=’Aport’;}
elseif ( strstr($_SERVER[’HTTP_USER_AGENT’], ‘lycos’) ) {$bot=’Lycos’;}
elseif ( strstr($_SERVER[’HTTP_USER_AGENT’], ‘fast’) ) {$bot=’Fast Search’;}
elseif ( strstr($_SERVER[’HTTP_USER_AGENT’], ‘rambler’) ) {$bot=’Rambler’;}
  if (empty($bot)) {
    $bot = "nobot";
  } else {
    $bot = "bot";
  }  
  $query_add = mysql_query("INSERT INTO online VALUES ('0', '$ip', '$bot', now())");
} else {
  # если пользователдь уже был на сайте, выбираем информацию о посетителе из БД (запрос уже есть выше)
  # Обновляем собранные данные в запись БД
  $query_update = mysql_query("UPDATE online SET last_visit = now() WHERE ip = '$ip'");
}


всё. Теперь ты знаешь кто и когда зашёл на сайт.


# Функция для вывода количества человек на сайте
function ShowOnline () {
  $query = mysql_query("SELECT count(*) FROM online WHERE last_visit > now() - interval '10' minute AND bot = 'nobot'");
  list($online) = mysql_fetch_array($query);
   $query_bot = mysql_query("SELECT count(*) FROM online WHERE last_visit > now() - interval '10' minute AND bot = 'bot'");
  list($online_bot) = mysql_fetch_array($query_bot);
  return "На сайте <b>$online</b> человек и $online_bot ботов";
}


PS: верстал из своих наработок, кое-где могут быть несостыковки

   
 
 автор: dima_s_d_s   (04.11.2006 в 12:09)   письмо автору
 
   для: dima_s_d_s   (03.11.2006 в 22:49)
 

Кто знает, подскажите!

   
 
 автор: dima_s_d_s   (03.11.2006 в 22:49)   письмо автору
 
   для: kasmanaft   (02.11.2006 в 12:22)
 

не работает! кто может продемонстрировать как можно реализовать данный скрипт?

   
 
 автор: kasmanaft   (02.11.2006 в 12:22)   письмо автору
 
   для: dima_s_d_s   (02.11.2006 в 11:53)
 

Замени ети черточки на кавычки

‘ ’

и можно попробовать заменить ф-и strstr на их регистронезависимый вариант stristr

   
 
 автор: dima_s_d_s   (02.11.2006 в 11:53)   письмо автору
 
   для: kasmanaft   (01.11.2006 в 08:40)
 

может я чего-то не понял. Но не работает у меня эта конструкция!

   
 
 автор: kasmanaft   (01.11.2006 в 08:43)   письмо автору
 
   для: dima_s_d_s   (31.10.2006 в 22:48)
 

Время пребывания - промежуток времени между первым и последним обновлением страницы пользователем ...
определить читает статью пользователь или покурить пошел не получится ...
Значит нужно куда-то записать время захода пользователя и считать разницу между этим и текущим.

Или вам нужно время прибывания ?
тогда можно определиться в промежутком времени, когда считать, что пользователь ушел. Нет его, допустим, 15 минут - значит ушел. То есть при входе пользователя смотрим когда он последний раз был на сайте, если >15 минут назад, значит он прибыл =)

   
 
 автор: kasmanaft   (01.11.2006 в 08:40)   письмо автору
 
   для: dima_s_d_s   (31.10.2006 в 23:58)
 

У поисковых ботов специфический user agent.
Значит проверяем юзер агент пользователя и делаем выводы...
первый пост в яндексе:

<?
if ( strstr($_SERVER[’HTTP_USER_AGENT’], ‘Yandex’) ) { $bot=’Yandex’;}
elseif ( 
strstr($_SERVER[’HTTP_USER_AGENT’], ‘Googlebot’) ) {$bot=’Google’;}
elseif ( 
strstr($_SERVER[’HTTP_USER_AGENT’], ‘Slurp’) ) {$bot=’Slurp’;}
elseif ( 
strstr($_SERVER[’HTTP_USER_AGENT’], ‘WebCrawler’) ) {$bot=’WebCrawler’;}
elseif ( 
strstr($_SERVER[’HTTP_USER_AGENT’], ‘ZyBorg’) ) {$bot=’ZyBorg’;}
elseif ( 
strstr($_SERVER[’HTTP_USER_AGENT’], ‘google’) ) {$bot=’Google’;}
elseif ( 
strstr($_SERVER[’HTTP_USER_AGENT’], ’scooter’) ) {$bot=’AltaVista’;}
elseif ( 
strstr($_SERVER[’HTTP_USER_AGENT’], ’stack’) ) {$bot=’Rambler’;}
elseif ( 
strstr($_SERVER[’HTTP_USER_AGENT’], ‘aport’) ) {$bot=’Aport’;}
elseif ( 
strstr($_SERVER[’HTTP_USER_AGENT’], ‘lycos’) ) {$bot=’Lycos’;}
elseif ( 
strstr($_SERVER[’HTTP_USER_AGENT’], ‘fast’) ) {$bot=’Fast Search’;}
elseif ( 
strstr($_SERVER[’HTTP_USER_AGENT’], ‘rambler’) ) {$bot=’Rambler’;}
if(
$bot !="") {
header("location:http://google.com");
}

   

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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