|
|
|
|
|
для: BArt Simpson
(13.01.2006 в 16:08)
| | Каждому пользователю ставится уникальная кука и по ним считается, сколько пользователей с уникальными куками - столько и уникальных пользователей. | |
|
|
|
|
|
|
|
для: Евгений Петров
(13.01.2006 в 16:20)
| | А есть пример скрипта подсчета уникальных пользователей? | |
|
|
|
|
|
|
|
для: BArt Simpson
(13.01.2006 в 16:55)
| | У меня нету :) | |
|
|
|
|
|
|
|
для: BArt Simpson
(13.01.2006 в 16:55)
| | Вчера помниться эта тема обсуждалась!
Поищи или тут на форуме в поиске или на woweb.ru, ishodniki.ru | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: cheops
(13.01.2006 в 19:22)
| | А на файлах можете показать??? | |
|
|
|
|
|
|
|
|
для: cheops
(13.01.2006 в 23:47)
| | Подскажите пожайлуста как сделать что бы пользователь не записывался второй раз если он открыл воторой браузер.
С примером кода пожайлуста. | |
|
|
|
|
|
|
|
для: MeTp
(08.04.2006 в 19:53)
| | Тогда по ip | |
|
|
|
|
|
|
|
для: MeTp
(08.04.2006 в 19:53)
| | В приведённом выше примере вместо $id_session следует использовать значение элемента суперглобального массива $_SERVER['REMOTE_ADDR'], в котором хранится IP-адрес посетителя. Но если посетитель ушлый - он может во втором браузере подключиться через прокси-сервер, и если последний не прозрачный, обойти это уже никак нельзя будет. | |
|
|
|
|
|
|
|
для: cheops
(09.04.2006 в 00:41)
| | Большое спавибо! | |
|
|
|