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

Форум PHP

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

 

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

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

тема: Сколько сейчас посетителей на сайте?
 
 автор: Владимир55   (12.01.2006 в 16:06)   письмо автору
 
 

На одном из сайтов увидел внизу такую надпись:

"Сейчас на сайте ххх посетителей".

И я такую же хочу!

Может, для этого надо к счетчику чего-нибудь добавить?

   
 
 автор: Panker   (12.01.2006 в 16:19)   письмо автору
 
   для: Владимир55   (12.01.2006 в 16:06)
 

В архиве всё написано что к чему 100% работает!
Блин вот я умница =))))))))
Удачи =)

   
 
 автор: Владимир55   (14.01.2006 в 22:35)   письмо автору
 
   для: Panker   (12.01.2006 в 16:19)
 

Спасибо, получилось!

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

чтение - запись - выполнение
владелей
группа
все пользователи

Я не понял, как здесь установить права доступа:
на саму папку - 711 (или 755)
на файл online.php - 444 (или 644)
на файл online.dat - 600 (или 666)

Поэтому поставил всем "птички" во всех клетках, и все заработало.

А как это сделать корректно?

И еще вопрос.
Ваша система считает всех посетителей, или только тех, кто читает главную страницу, на которой и установлен скрипт?

   
 
 автор: Владимир55   (16.01.2006 в 21:13)   письмо автору
 
   для: Владимир55   (14.01.2006 в 22:35)
 

Вопрос совсем ушел в небытие...

   
 
 автор: cheops   (17.01.2006 в 02:38)   письмо автору
 
   для: Владимир55   (16.01.2006 в 21:13)
 

Смутила фраза "Спасибо, получилось!".

В UNIX права доступа выставляются для трёх групп:
владельца файла,
группы в которую входит владелец файла,
всех остальных

Права доступа могут быть на чтение (4), на запись(2) и на исполнение (1) файла. Для разрешения чтения и записи в файл используется цифра 6 (2+4 = 6), для предоставления полного доступа используется цифра 7 (1+2+4=7).

Для файлов наиболее приемлемые права доступа: чтение и запись для владельци и чтение для всех остальных - 644. Для того, чтобы иметь возможность "заходить" в директорию, для последних необходимо выставить права доступа и на исполнение, поэтому для них следует выставлять - 755.

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=158

   
 
 автор: Владимир55   (17.01.2006 в 12:40)   письмо автору
 
   для: cheops   (17.01.2006 в 02:38)
 

Спасибо, cheops! Я с этими правами давно хотел разобраться... Теперь, с Вашей помощью, удалось!

А теперь может быть Вы выскажете свое мнение о том, всех ли посетителей сайта считает эта программа? Или только тех, кто на главной странице, на которой установлен вывод результатов?

Сам я с алгоритмом не справился...

   
 
 автор: cheops   (17.01.2006 в 14:02)   письмо автору
 
   для: Владимир55   (17.01.2006 в 12:40)
 

Скрипт считает только тех посетителей, которые посещают страницы, к которым скрипт подсчёта подсоединён. Т.е. если необходимо учитывать посетителей остальных страниц - следует присоединить скрипт и к ним.

   
 
 автор: Владимир55   (18.01.2006 в 13:11)   письмо автору
 
   для: cheops   (17.01.2006 в 14:02)
 

Дорогой cheops!

Но как же его подключить к другим страницам?

В инструкции по установке скрипта написано вот что:

1. Закачайте файлы на сервер в любую папку.
2. Установите следующие права доступа:
на саму папку - 711 (или 755)
на файл online.php - 444 (или 644)
на файл online.dat - 600 (или 666)
3. Вставьте на страницу, где хотите видеть кол-во посетителей, следующий код:
<script language="JavaScript" src="http://you_url/you_dir/online.php"></script>
например: <script language="JavaScript" src="http://raven.km.ru/online/online.php"></script>


А сам скрипт, фактически, состоит из одного файла online.php. Как работает этот файл, понять я не смог, сколько ни старался! Я приложил его к этому письму на всякий случай.

Может быть Вы посоветуете, как же подключить к учету все страницы сервера? Видимо, на каждую странцу, надо поставить какой-то скрипт, но какой? А может быть придется изменить и файла online.php?

   
 
 автор: Loki   (18.01.2006 в 13:24)   письмо автору
 
   для: Владимир55   (18.01.2006 в 13:11)
 

так собственно "<script language="JavaScript" src="http://you_url/you_dir/online.php"></script>" - это и есть скрипт. Вставляете его во все страницы, которые должны отображать к-во посетителей.

   
 
 автор: Владимир55   (18.01.2006 в 13:52)   письмо автору
 
   для: Loki   (18.01.2006 в 13:24)
 

"Вставляете его во все страницы, которые должны отображать к-во посетителей". - И при этом на каждой странице будет СУММАРНОЕ число посетителей, правильно я понял?

Или только тех, что на этой странице?

   
 
 автор: Loki   (18.01.2006 в 14:00)   письмо автору
 
   для: Владимир55   (18.01.2006 в 13:52)
 

Всех пользователей на сайте.

   
 
 автор: Владимир55   (18.01.2006 в 14:59)   письмо автору
 
   для: Loki   (18.01.2006 в 14:00)
 

С чувством глубокого удовлетворения сообщаю, что я, наконец-то, разобрался с этой штучкой, и нахожу её великолепной и очень удобной!

Большое спасибо всем, кто мне помог!

   
 
 автор: Владимир55   (20.01.2006 в 13:47)   письмо автору
 
   для: Владимир55   (18.01.2006 в 14:59)
 

А вот если один посетитель откроет две страницы, он будет зачтен за два посетителя?

   
 
 автор: Владимир55   (20.01.2006 в 14:19)   письмо автору
 
   для: Владимир55   (20.01.2006 в 13:47)
 

Я ещё вот чего не понял: если посетитель находится на транице долго (у меня есть случаи 10 часов!), то его присутствие учитывается? Или спустя какое-то конкретное время посетитель считаеся ушедшим в любом случае?

А вот если один посетитель откроет две страницы, он будет зачтен за два посетителя?

   
 
 автор: cheops   (20.01.2006 в 14:56)   письмо автору
 
   для: Владимир55   (20.01.2006 в 13:47)
 

При использовании сессий нет.

   
 
 автор: Владимир55   (20.01.2006 в 15:09)   письмо автору
 
   для: cheops   (20.01.2006 в 14:56)
 

А при использовании программы, присланной в архиве Panker ?

С этой программой тоже одни посетитель на двух страницах считается за одного? И даже если он на сайте коуглые сутки сидит, он тоже учитается?

Или в программе Panker не так?

   
 
 автор: Loki   (20.01.2006 в 15:58)   письмо автору
 
   для: Владимир55   (20.01.2006 в 15:09)
 

Посетитель на двух страницах считается за одного. Учитываются все, кто заходил на сайт в течение последних 10 минут (регулируется строкой time()-600; 600 - это интервал в секундах)

   
 
 автор: elenaki   (20.01.2006 в 16:24)   письмо автору
 
   для: Loki   (20.01.2006 в 15:58)
 

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

   
 
 автор: Loki   (20.01.2006 в 16:33)   письмо автору
 
   для: elenaki   (20.01.2006 в 16:24)
 

Совершенно верно.
Серверу послали запрос, он отдал страницу и забыл о существовании пользователя - между ними все дела закончились... Можно считать что пользователь будет полученную страницу читать 3 минуты, 10 или даже целый час. Но проверить мы это (сравнительно честными способами) не можем.

   
 
 автор: elenaki   (20.01.2006 в 16:45)   письмо автору
 
   для: Loki   (20.01.2006 в 16:33)
 

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

   
 
 автор: Владимир55   (20.01.2006 в 18:25)   письмо автору
 
   для: elenaki   (20.01.2006 в 16:45)
 

Получается, что спящий приравнивается к ушедшему...

А вот в том скрипте, что предложил ДДР, "информация в сессиях хранится пока не закрыт браузер или 1440 секунд".

Правда, я его не пробовал и даже не пойму, как он работает.

   
 
 автор: Loki   (20.01.2006 в 20:33)   письмо автору
 
   для: elenaki   (20.01.2006 в 16:45)
 

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

   
 
 автор: cheops   (13.01.2006 в 19:29)   письмо автору
 
   для: Владимир55   (12.01.2006 в 16:06)
 

Такой скрипт описывается в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=11471

   
 
 автор: Владимир55   (14.01.2006 в 22:29)   письмо автору
 
   для: cheops   (13.01.2006 в 19:29)
 

Спасибо, cheops!

Я взял на заметочку, потому что сразу разобраться не смог... Мне эти базы - бр-р-р-р! Хотя понимаю, что это очень правильное, грамотное и прогрессивное решение, просто я к этому ещё не готов!

   
 
 автор: Unkind™   (14.01.2006 в 22:52)   письмо автору
 
   для: Владимир55   (14.01.2006 в 22:29)
 


>На одном из сайтов увидел внизу такую надпись:

>"Сейчас на сайте ххх посетителей".

>И я такую же хочу!

Пишите:

Сейчас на сайте <b>xxx</b> посетителей<br>

Ладно, шутка...=)

   
 
 автор: ZetRider   (17.01.2006 в 13:19)   письмо автору
 
   для: Unkind™   (14.01.2006 в 22:52)
 

<?php
/*
********************************************************************
* Название: Sad Raven's Online Counter *
********************************************************************
* Версия: 1.0 *
* Стоимость: бесплатный скрипт *
* Требования: PHP4 и выше *
* Платформа: любая *
* Язык: русский *
* Автор: Sad Raven (http://www.sad-raven.ru) *
********************************************************************
* Создан: 15 июня 2002 *
********************************************************************
*/

$data="log/online.dat";
$time=time();
$past_time=time()-600;

$readdata=fopen($data,"r") or die("Не могу открыть файл $data");
$data_array=file($data);
fclose($readdata);

if (getenv('HTTP_X_FORWARDED_FOR'))
$user = getenv('HTTP_X_FORWARDED_FOR');
else
$user = getenv('REMOTE_ADDR');

$d=count($data_array);
for($i=0;$i<$d;$i++)
{
list($live_user,$last_time)=explode("::","$data_array[$i]");
if($live_user!=""&&$last_time!=""):
if($last_time<$past_time):
$live_user="";
$last_time="";
endif;
if($live_user!=""&&$last_time!="")
{
if($user==$live_user)
{
$online_array[]="$user::$time\r\n";
}
else
$online_array[]="$live_user::$last_time";
}
endif;
}

if(isset($online_array)):
foreach($online_array as $i=>$str)
{
if($str=="$user::$time\r\n")
{
$ok=$i;
break;
}
}
foreach($online_array as $j=>$str)
{
if($ok==$j) { $online_array[$ok]="$user::$time\r\n"; break;}
}
endif;

$writedata=fopen($data,"w") or die("Не могу открыть файл $data");
flock($writedata,2);
if($online_array=="") $online_array[]="$user::$time\r\n";
foreach($online_array as $str)
fputs($writedata,"$str");
flock($writedata,3);
fclose($writedata);

$readdata=fopen($data,"r") or die("Не могу открыть файл $data");
$data_array=file($data);
fclose($readdata);
$online=count($data_array);

echo "На сайте : $online";
?>

   
 
 автор: Panker   (19.01.2006 в 07:02)   письмо автору
 
   для: ZetRider   (17.01.2006 в 13:19)
 

Помойму он уже всё понел сказал спасибо и всё )) что ещё грузить то его =))

   
 
 автор: DDK   (20.01.2006 в 13:57)   письмо автору
 
   для: Владимир55   (12.01.2006 в 16:06)
 

Вот очень надёжный и простой пример. Скрипт работает только на сессиях, не используя даже БД.

<?Php
session_start
();
define("MAX_IDLE_TIME"3);
function 
getOnlineUsers(){
if ( 
$directory_handle opendirsession_save_path() ) ) {
$count 0;
while ( 
false !== ( $file readdir$directory_handle ) ) ) {
if(
$file != '.' && $file != '..'){
if(
time()- fileatime(session_save_path() . '\\' $file) < MAX_IDLE_TIME 60) {
$count++;
}
} }
closedir($directory_handle);
return 
$count;
} else {
return 
false;
}}
echo 
'Пользователей онлайн: ' getOnlineUsers() . '<br />';
?>

Найдено и взято с: http://www.wmate.ru/

   
 
 автор: Loki   (20.01.2006 в 14:15)   письмо автору
 
   для: DDK   (20.01.2006 в 13:57)
 

Прикольно!
вертелась в голове подобная идея, но так в код и не оформилась:)

   
Rambler's Top100
вверх

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