Мой скрипт счетчик "Сколько сейчас на сайте" простой и надежный. В его пользу
несколько важных плюсов:
1) Скрипт работает без базы данных, информация хранится в файле.
2) Не использует сессию, нет лишней нагрузки на сервер.
3) Не использует куки, их часто люди отключают.
4) Подсчитывает посетителей по их ip, небольшая погрешность в подсчете, потому
как провайдеры интернета на одном узле могут к одному ip подключить то одного,
то другого пользователя интернета. Даже бывает так, что один пользователь за один
сеанс использует несколько ip. Но такое бывает редко.
В интернете много похожих скриптов, но мой с правильной работой с файлом.
Без ошибок, которые приводят к сбросу информации (счета) или к другим последствием.
Лучше создать отдельный файл для скрипта в закрытой папке от пользователей и
подключить его с помощью include или require, чтобы бы не вписывать большой код в
ваш шаблон.
Вот сам PHP код:
<?php
$ip=getenv("REMOTE_ADDR");
if ($ip!="") {
//текущее время
$CurrentTime = time();
//через какое время ip удаляются
$LastTime = time() - 600;
//файл, в котором храним ip и время
$puthcount = $_SERVER["DOCUMENT_ROOT"] . "/include/seans.txt";
fclose(fopen($puthcount, "a"));
$file = file($puthcount);
$k = 0;
for ($i = 0; $i < sizeof($file); $i++) {
$stroka = $file[$i];
$line = explode("|", $stroka);
if ($line[1] > $LastTime) {
$ResFile[$k] = $stroka;
$k++;
}
}
for ($i = 0; $i < sizeof($ResFile); $i++) {
$stroka = $ResFile[$i];
$line = explode("|", $stroka);
if ($line[0]==$ip) {
$line[1] = trim($CurrentTime)."\n";
$is_ip_in_file = 1;
}
$linen = implode("|", $line);
$ResFile[$i] = $linen;
}
$fol = fopen($puthcount, "r+");
flock($fol, LOCK_EX);
ftruncate ($fol, 0);
fseek ($fol, 0, SEEK_SET);
for ($i = 0; $i < sizeof($ResFile); $i++) {
fputs($fol, $ResFile[$i]);
}
fflush($fol);
flock($fol, LOCK_UN);
fclose($fol);
if (!$is_ip_in_file) {
$fp = fopen($puthcount, "a");
flock($fp, LOCK_EX);
$line = $ip."|".$CurrentTime."\n";
fputs($fp, $line);
fflush($fp);
flock($fp, LOCK_UN);
fclose($fp);
}
}
? >
Вот код вывода результата счета на страницах сайта:
<?php
$koluser_online = sizeof(file($puthcount));
echo "Сейчас на сайте: <b>". $koluser_online ."</b>";
? >
Скрипт бесплатный и устанавливать можете на любое количество ваших сайтов,
но распространять можно только с присутствием ссылки на этот сайт,
с места распространения. Удачи! Алексей.
Скрипт слайдера | Zip распаковщик | Скрипт счетчик | Скрипт Обр. связи | Нажмите, чтобы увеличить
Ротатор рекламных материалов AVL | Сколько сейчас на сайте | Онлайн (online) подсветка программного кода
Скрипт для подсветки программного кода | Форма для загрузки нескольких изображений
Два примера кода формы для загрузки нескольких изображений | Php обработчик загрузки нескольких изображений на сервер
Ваш комментарий или вопрос
Если нашу ссылку вставите себе на сайт по адресу написанному вами в
комментарии, то ваш адрес тоже станет ссылкой!