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

Форум PHP

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

 

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

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

тема: Счетчик и сессии - как связать?
 
 автор: nataliaa   (31.01.2006 в 19:11)   письмо автору
 
 

Нашла код файлового счетчика - но дело в том - что он считает один и тот же 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);

Спасибо!

   
 
 автор: PantiL   (31.01.2006 в 19:26)   письмо автору
 
   для: nataliaa   (31.01.2006 в 19:11)
 

С сессией ничего не получится - надо IP записывать в файл.

   
 
 автор: Армянин   (01.02.2006 в 13:57)   письмо автору
 
   для: 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;?>

   
 
 автор: Kusuk   (01.02.2006 в 14:06)   письмо автору
 
   для: 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>";
    }

   
Rambler's Top100
вверх

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