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

Форум PHP

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

 

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

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

тема: Как считаются уникальные пользователи на сайте (посетители OnLine)?
 
 автор: BArt Simpson   (13.01.2006 в 16:08)   письмо автору
 
 

в теме

   
 
 автор: Евгений Петров   (13.01.2006 в 16:20)   письмо автору
 
   для: BArt Simpson   (13.01.2006 в 16:08)
 

Каждому пользователю ставится уникальная кука и по ним считается, сколько пользователей с уникальными куками - столько и уникальных пользователей.

   
 
 автор: BArt Simpson   (13.01.2006 в 16:55)   письмо автору
 
   для: Евгений Петров   (13.01.2006 в 16:20)
 

А есть пример скрипта подсчета уникальных пользователей?

   
 
 автор: Евгений Петров   (13.01.2006 в 17:03)   письмо автору
 
   для: BArt Simpson   (13.01.2006 в 16:55)
 

У меня нету :)

   
 
 автор: cernos   (13.01.2006 в 17:31)   письмо автору
 
   для: BArt Simpson   (13.01.2006 в 16:55)
 

Вчера помниться эта тема обсуждалась!
Поищи или тут на форуме в поиске или на woweb.ru, ishodniki.ru

   
 
 автор: cheops   (13.01.2006 в 19:22)   письмо автору
 
   для: BArt Simpson   (13.01.2006 в 16:08)
 

Пусть имеется таблица
CREATE TABLE session ( 
  id_session tinytext NOT NULL, 
  putdate datetime NOT NULL default '0000-00-00 00:00:00', 
  user tinytext NOT NULL 
) TYPE=MyISAM;

Для зарегистрированных посетителей пусть также в элемент $_SESSION['user'] помещается их имя, тогда учёт посетителей может выглядеть следующим образом
<?php 
  
// Начинаем сессию 
  
session_start(); 
  
// Получаем уникальный id сессии 
  
$id_session session_id(); 
  
// Устанавливаем соединение с базой данных
  
include "config.php";
  
// Проверяем, присутствует ли такой id в базе данных 
  
$query "SELECT * FROM session 
            WHERE id_session = '
$id_session'"
  
$ses mysql_query($query); 
  if(!
$ses) exit("<p>Ошибка в запросе к таблице сессий</p>"); 
  
// Если сессия с таким номером уже существует, 
  // значит пользователь online - обновляем время его 
  // последнего посещения 
  
if(mysql_num_rows($ses)>0
  { 
    
$query "UPDATE session SET putdate = NOW(),
                                 user = '
$_SESSION[user]
              WHERE id_session = '
$id_session'"
    
mysql_query($query); 
  } 
  
// Иначе, если такого номера нет - посетитель только что 
  // вошёл - помещаем в таблицу нового посетителя 
  
else 
  { 
    
$query "INSERT INTO session 
              VALUES('
$id_session', NOW(), '$_SESSION[user]')"
    if(!
mysql_query($query)) 
    { 
      echo 
$query."<br>"
      echo 
"<p>Ошибка при добавлении пользователя</p>"
      exit(); 
    } 
  } 
  
// Будем считать, что пользователи, которые отсутствовали 
  // в течении 20 минут - покинули ресурс - удаляем их 
  // id_session из базы данных 
  
$query "DELETE FROM session 
            WHERE putdate < NOW() -  INTERVAL '20' MINUTE"

  
mysql_query($query); 
?>

А вывести список посетителей можно при помощи скрипта
<?php 
  
// Устанавливаем соединение с базой данных
  
include "config.php";
  
// Выводим имена всех посетителей, записи о которых имеются 
  // в таблице session 
  
$query "SELECT * FROM session"
  
$ath mysql_query($query); 
  if(!
$ath) exit("<p>Ошибка в запросе к таблице сессий</p>"); 
  
// Если хоть кто-то есть - выводим таблицу 
  
if(mysql_num_rows($ath)>0
  { 
    echo 
"<table>"
    while(
$author mysql_fetch_array($ath))
    {
      
// Если посетитель не зарегистрирован
      // выводим вместо его имени - "аноним"
      
if(empty($author['user'])) echo "<tr><td>аноним</td></tr>"
      else echo 
"<tr><td>".$author['user']."</td></tr>"
    }
    echo 
"</table>"
  } 
?>

Для установки соединения с базой данных используется файл config.php, посмотреть содержимое которого можно в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=3803

   
 
 автор: m@rchello   (13.01.2006 в 19:50)   письмо автору
 
   для: cheops   (13.01.2006 в 19:22)
 

А на файлах можете показать???

   
 
 автор: cheops   (13.01.2006 в 23:47)   письмо автору
 
   для: m@rchello   (13.01.2006 в 19:50)
 

Пример на файлах, вы найдёте в конце темы http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=10772

   
 
 автор: MeTp   (08.04.2006 в 19:53)   письмо автору
 
   для: cheops   (13.01.2006 в 23:47)
 

Подскажите пожайлуста как сделать что бы пользователь не записывался второй раз если он открыл воторой браузер.
С примером кода пожайлуста.

   
 
 автор: CrazyAngel   (08.04.2006 в 21:58)   письмо автору
 
   для: MeTp   (08.04.2006 в 19:53)
 

Тогда по ip

   
 
 автор: cheops   (09.04.2006 в 00:41)   письмо автору
 
   для: MeTp   (08.04.2006 в 19:53)
 

В приведённом выше примере вместо $id_session следует использовать значение элемента суперглобального массива $_SERVER['REMOTE_ADDR'], в котором хранится IP-адрес посетителя. Но если посетитель ушлый - он может во втором браузере подключиться через прокси-сервер, и если последний не прозрачный, обойти это уже никак нельзя будет.

   
 
 автор: MeTp   (09.04.2006 в 11:11)   письмо автору
 
   для: cheops   (09.04.2006 в 00:41)
 

Большое спавибо!

   
Rambler's Top100
вверх

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