|
|
|
| Нашла код файлового счетчика - но дело в том - что он считает один и тот же IP по нескольку раз!
Подскажите, пожалуйста - как связать этот код с сессиями? - чтобы засчитывался только оригинальный IP адрес!
Это код простого счетчика:
// Имя файла
$filename = "count.txt";
// Открываем файл для чтения
$fd = fopen($filename,"r");
// Читаем его содержимое в буфер
$count = fread($fd,filesize($filename));
// Закрываем файл
fclose($fd);
// Если переменная пуста - присваиваем ей 0
if(empty($count)) $count = 0;
++$count;
// Открываем файл для записи
$fd = fopen($filename,"w");
// Помещаем в файл новое значение переменной $count
fwrite($fd, $count);
// Закрываем файл
fclose($fd);
|
Спасибо! | |
|
|
|
|
|
|
|
для: nataliaa
(31.01.2006 в 19:11)
| | С сессией ничего не получится - надо IP записывать в файл. | |
|
|
|
|
|
|
|
для: nataliaa
(31.01.2006 в 19:11)
| | для этого нужно использовать cookies (смотри script)
<?php
$f=fopen("counter.dat","a+") or die ("невозможно открыть файл");
flock ($f,2);
$count=fread($f,100);
if (isset($was)){
$count=$was+1;}
if (!isset($was))
{$was=1;
SetCookie("was",$was,0x7FFFFFFF);
$REMOTE_HOST=gethostbyaddr($REMOTE_ADDR);
if (!($HTTP_HOST===$REMOTE_HOST)) @$count=$count+1;
}
ftruncate ($f,0);
fwrite ($f,$count);
flock ($f,3)
fclose($f);
echo $count;?> | |
|
|
|
|
|
|
|
для: nataliaa
(31.01.2006 в 19:11)
| |
session_start();
$sess = session_id();
$file = fopen("counter.txt","r+");
if (!$file)
{
echo "Ошибка Инициализации счётчика";
}
else
{
$buff = fread ($file,1000);
$counter_2= (int) $buff;
}
$query = "SELECT * FROM count where sess_id = '$sess' ";
$result = mysql_query($query);
if (mysql_num_rows($result)>0)
{
}
else
{
$query = mysql_query("INSERT INTO count VALUES ('$sess')");
$counter_2=$counter_2+1;
$counter = $counter_2;
$_SESSION['count'] = $counter;
fseek($file,0);
fwrite($file,$counter);
fclose($file);
}
|
затем выводишь
if (!empty($_SESSION['count']))
{
echo "<b>Вы ".$_SESSION['count']." посетитель</b>";
}
|
| |
|
|
|