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

Форум PHP

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

 

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

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

тема: Статистика посещений--нужна помощь...
 
 автор: Terror   (12.12.2004 в 22:28)   письмо автору
 
 

Есть файлик, который записывает в ТХТ файл данные о посетителе сайта,
скрипт:
<?php
$date
=date("d M Y, H:i:s");
$ip=getenv("REMOTE_ADDR"); 
$host gethostbyaddr($ip); 
function 
opsys_info($agent
{
if (
strstr($agent'Win')): 
$sys "windows";
elseif (
strstr($agent'Linux')):
$sys "Linux";
elseif (
strstr($agent'Unix')): 
$sys "Unix";
elseif (
strstr($agent'Mac')): 
$sys "Macintosh";
else:
$sys "Unknown";
endif;
return 
$sys;
}
function 
browser_info ($agent
{
if (
ereg('MSIE ([0-9].[0-9]{1,2})'$agent$version)):
$browse_type "IE";
$browse_version $version[1];
elseif (
ereg('Opera ([0-9].[0-9]{1,2})'$agent$version)):
$browse_type "Opera";
$browse_version $version[1];
elseif (
ereg('Mozilla/([0-9].[0-9]{1,2})'$agent$version)):
$browse_type "Netscape";
$browse_version $version[1];
else:
$browse_type "Unknown";
$browse_version "Unknown";
endif;
return array (
$browse_type$browse_version);

list (
$browse_type$browse_version) = browser_info ($HTTP_USER_AGENT); 
$operating_sys opsys_info ($HTTP_USER_AGENT);
$str=(
</tr>
<td><b>
$date</b></td> 
<td><b>
$host</b></td>
<td><b>
$ip</b></td>
<td><b>
$browse_type $browse_version</b></td>
<td><b>
$operating_sys</b></td>
<tr bgcolor='#99CC00' onmouseover=\"this.style.backgroundColor='#CCFF33';\"onmouseout=\"this.style.backgroundColor='#99CC00'\">"
);
$file ="report.txt";
$fp =fopen($file"a");
fwrite($fp,$str); 
fclose($fp);
print 
"<center><b>Все зашибись!!! Click <a href='stat.php'>HERE</a> to wiev</b></center>"
?>

с помощью другого файлика stat.php я просматриваю эту статистику.
скрипт:
<?
$date
=date("d M Y, H:i:s");
print 
"
<head>
<title>Статистика На 
$date</title>
</head>
<table width=\"600\" border=\"1\" align=\"center\" cellpadding=\"2\" cellspacing=\"0\" bordercolor=\"#990000\">
    <tr bgcolor='#FFFFCC'>
    <td colspan=\"5\"><center><strong>Статистика Посещений</strong></center></td>
    </tr>
    <tr bgcolor='#F3F3F3'>
    <td><center><strong>Система</strong></center></td>
    <td><center><strong>Браузер</strong></center></td>
    <td><center><strong>IP</strong></center></td>
    <td><center><strong>Хост</strong></center></td>
    <td><center><strong>Время Посещения</strong></center></td>
</tr>"
;
$file ="report.txt";
$fp fopen$file"r" );
while ( ! 
feof$fp ) )
{
$line[] = fgets$fp1024 );
}
fclose$fp );
$line_reverce array_reverse$line );
foreach ( 
$line_reverce as $line_print )
print 
"$line_print";
print 
"</table>";
?>

Я хочу к этому всему добавить нумерацию посещений, т.е. чтобы каждое посещение нумеровалось и выводилось общее количество посещений.
Как мне это сделать?

   
 
 автор: cheops   (12.12.2004 в 22:45)   письмо автору
 
   для: Terror   (12.12.2004 в 22:28)
 

Хм... а вы заведите ещё один файл (count.txt) в котором храните число посещений и увеличивайте счётчик при каждом посещении... Тогда нумеровать посещения будет очень просто - открыть файл count.txt, прочитать значение счётчика, увеличить его на единицу - записать это значение в соотвествующую ячейку новой записи таблицы в report.txt и переписать значение в count.txt на новое. Отдельное хранение числа записей в report.txt позволит не анализировать каждый раз его для того, чтобы выяснить сколько записей он содержит.

   
 
 автор: Terror   (12.12.2004 в 22:52)   письмо автору
 
   для: cheops   (12.12.2004 в 22:45)
 

Спасибо за коментарий, я впринципе всё это так себе и представлял....
А не могли бы Вы поподробнее всё это в коде описать?

   
 
 автор: cheops   (12.12.2004 в 23:37)   письмо автору
 
   для: Terror   (12.12.2004 в 22:52)
 

Для того, чтобы извлечь число из файла count.txt следует воспользоваться следующим скриптом:
<?php
  
// Имя файла
  
$filename "count.txt";
  
// Открываем файл для чтения
  
$fd fopen($filename,"r");
  
// Читаем его содержимое в буфер
  
$count fread($fd,filesize($filename));
  
// Закрываем файл
  
fcose($fd);
  
// Если переменная  пуста - присваиваем ей 0
  
if(empty($count)) $count 0;
?>

Теперь увеличиваем значение переменной на единицу
<?php
  
++$count;
?>

и записываем новое значение в файл count.txt
<?php
  
// Открываем файл для записи
  
$fd fopen($filename,"w");
  
// Помещаем в файл новое значение переменной $count
  
fwrite($fd$count);
  
// Закрываем файл
  
fcose($fd);
?>

Далее остаётся только добавить в переменную $str дополнительное поле для номера записи
<td>$count</td>

   
 
 автор: Terror   (13.12.2004 в 00:02)   письмо автору
 
   для: cheops   (12.12.2004 в 23:37)
 

Большое вам спасибо!
И ещё один вопросик: можно ли к каждой записи информации о посетителе прикрепить её номер,
т.е. чтобы каждая запись нумеровалась?
Заранее благодарен.

   
 
 автор: cheops   (13.12.2004 в 00:10)   письмо автору
 
   для: Terror   (13.12.2004 в 00:02)
 

Ну да... я как раз и хотел сказать, что нумеровать посещения при таком подходе будет очень легко, исправив, блок кода, несущий ответственность за формирование переменной $str
<?php
$str
=(
</tr> 
<td><b>
$count</b></td> 
<td><b>
$date</b></td> 
<td><b>
$host</b></td> 
<td><b>
$ip</b></td> 
<td><b>
$browse_type $browse_version</b></td> 
<td><b>
$operating_sys</b></td> 
<tr bgcolor='#99CC00' onmouseover=\"this.style.backgroundColor='#CCFF33';\"onmouseout=\"this.style.backgroundColor='#99CC00'\">"
);
?>

   
 
 автор: Terror   (13.12.2004 в 00:20)   письмо автору
 
   для: cheops   (13.12.2004 в 00:10)
 

Точно! Извините, я не понял просто сначала...
Спасибо, это как раз то что мне и нужно было!

   
 
 автор: Terror   (13.12.2004 в 14:10)   письмо автору
 
   для: Terror   (13.12.2004 в 00:20)
 

Что бы мне не вешать весь этот скрипт на страницу можно ли сделать это при помощи какой нибудь ссылки?

   
Rambler's Top100
вверх

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