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

Форум PHP

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

 

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

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

тема: Помогите со счётчиком
 
 автор: Panker   (20.07.2006 в 03:46)   письмо автору
 
 

Дело в том что я не имею предстовленяи как мне вычислять уникальный ли это юзер или нет!
куками не очнеь хочется!
хотел сделат ьпроверку на ip но не знаю как!
помогите мне пожалуйсто сделать этО! (
как бы я пишу так
1 файл сегоднешнего числа!
2 строки!
первая страка пишится уникальные
вторая не уникальные!
помогите сделать базу! тоесть если заходит юзер его ip пишится в базу ip.html и потмо при заходах база проверяется и если етсь ip то уникального не пишим или как нить так!
уверен на сто процентво у ковонить етсь аткой скрипт ведь много пр онего тут гвоорили но я не нащёл мля :(
помогите пожалуйсто сделтать или дайте такой скриптик
зарание спасибо!

   
 
 автор: bonus_FM   (20.07.2006 в 14:51)   письмо автору
 
   для: Panker   (20.07.2006 в 03:46)
 

Тут кое-что из скриптов есть: http://script.woweb.ru/index.htm

   
 
 автор: cheops   (20.07.2006 в 16:48)   письмо автору
 
   для: Panker   (20.07.2006 в 03:46)
 

IP-адрес клиента можно определить следующим образом
<?php
  
echo $_SERVER['REMOTE_ADDR']
?>

   
 
 автор: Webmaster-X   (20.07.2006 в 17:22)   письмо автору
 
   для: cheops   (20.07.2006 в 16:48)
 


<?
   $new_ip
=$_SERVER['REMOTE_ADDR'];
   
$f=file("./user.dat");
   
$faq_file=count($f);
   if(
$faq_file>=1){ //если в файле чтото есть
      
for($i=0;$i<count($f);$i++){
      list(
$count,$ip)=explode("::",$f[$i]); //$count будет щётчиком
      
$string=$ip;

   if(
ereg("$new_ip",$string))
   {
   
# если ip найден, то
   # выполняется эта часть кода , к примеру увеличиваем щётчик на один
   
}else {
   
# если ip не найден, то
   # выполняется эта часть кода
   

}
}else{ 
// если файл пустой просто записываем

$fp = @fopen("./user.dat","a");
$count=1;
$info "$count::$ip::\r\n";
fputs($fp,$info);
fclose($fp);
?> 

P.S. Работоспособность не проверял, написал просто из соображений

   
 
 автор: Temnovit   (20.07.2006 в 18:17)   письмо автору
 
   для: Panker   (20.07.2006 в 03:46)
 

чтобы посчитать сколько уникальных пользователей зашло на страницу, я использовал такой способ :

Допустим, наша база данных - это текстовый файл visits.txt
Схема счечика очень проста. В файл записываються IP сашедших пользователей в столбик и только в том случае, если такого IP в файле еще нет.

Таким образом, у нас будет список всех уникальных адресов в файле. При необходимости, их можно просто сосчитать и получить колличество уникальных посещений.

Есть 2 функции

1) SaveVisit() -вызываеться каждый раз, когда кто-то заходит на страницу и добавляет посещение в базу.

<?
function SaveVisit() {
 
//Получаем все содержимое файла в строку $ftsr используя функцию file_get_contents
 
$ftsr file_get_contents('visits.txt');
 
//Разбиваем строку на массив, каждый элемент которого строка из файла
 
$farr explode("\n"$fstr);
/* Если ай-пи адреса текущего пользователя
 Который храниться в переменной $_SERVER['REMOTE_ADDR'
 Еще не записан в файл... */
 
if ( !in_array($_SERVER['REMOTE_ADDR']),  $farr) {
   
//Добавляем новый ай-пи к массиву
   
$farr[] =$_SERVER['REMOTE_ADDR'];
   
//и собираем массив обратно в строку
   
$fstr implode("\n"$farr);
   
//сохраняем все в файл
   
file_put_contents('visits.txt'$fstr);
 }
}
?>



<?
2
ShowUnicVisits() - Возвращает колличество уникальных посещений

function ShowUnicVisits() {
  
//Возвращает колличество уникальных ай-пи адресов
  
return countfile('visits.txt') );
}
?>


теперь на каждой странице,где Вы хотите посчитать посещения, пишите строку

<? SaveVisit(); ?>


и чтобы вывести результат

Было <?=ShowUnicVisits() ?> уникальных посещений


P.S. прошу прощения за грамматические ошибки :)

   
 
 автор: Axxil   (20.07.2006 в 19:17)   письмо автору
 
   для: Temnovit   (20.07.2006 в 18:17)
 

Приведёные выше способы следует ещё дополнить проверкой user_agent чтобы убить пауков и грабилки разные.
А вообще если хочется получить довольно честную картину посещаемости униками, то следует комбинировать известные науке способы определения таковых. А именно:
1. Ставить куку там где это возможно
2. Учитывать юзер-агента
3. Естесственно проверять IP
4. Ещё проверять откуда гражданин пришёл на страницу. Если с этого же сайта, то в Бобруйск его, уже считали.
5.... фиг знает может ещё что забыл...

   
 
 автор: Panker   (21.07.2006 в 03:57)   письмо автору
 
   для: Axxil   (20.07.2006 в 19:17)
 

Помогите плиз вроде бы всёделал как надо а вроде нет (
смысл том что уникальные не прибывают тоисть не пишутся, и ip ЮЗЕРА В БАЗЕ НЕ ПЕРВЫЙ на первой строке то он в базу ваше не пишится :(
пытаюсь првоерку по айпи присабачить )

<?
 $fp 
= @fopen("user.dat","a"); 
 
$info ""
 
fputs($fp,$info); 
 
fclose($fp); 
   
$new_ip=$_SERVER['REMOTE_ADDR']; 
   
$f=file("user.dat"); 
   
$faq_file=count($f); 
   if(
$faq_file>=1)
{
      for(
$i=0;$i<count($f);$i++)

      list(
$count,$ip)=explode("::",$f[$i]); //$count будет щётчиком 
      
$string=$ip

   if(
ereg("$new_ip",$string)) 
   { 

    
///////////////////////А это короче если найдено
//Создаём сегоднейшней файл сегоднешнего числа для дальнейшей записи в него............
$f fopen("data/"."$data."."dat""at"); //Создали файл сегоднешнего числа
fclose($f); //Всё, создали теперь закрыли файл...
//Берём из файла первое число, оно у нас в начале 0
$f file("data/"."$data."."dat"); //Берём число из файла сегоднешней даты
$hit $f[0]; //Берём из нулевой строки число
$host $f[1]; //Берём из нулевой строки число
//Пишим в файлик данные за сегодня
$f fopen("data/"."$data."."dat""w");  //Выбераем файл
$hit1=($hit)+1//При заходе добавляем единицу к числу......
$host1=($host);
$str="$hit1"."\r\n"."$host1"//Выбрали что записываем
fputs($f$str); //Записали на одно  число на одну единицу больше
fclose($f); //Закрыли файлик
$time=mktime(0,0,0,date("m"),date("d")+1,date("Y"))-strtotime("now"); 
setcookie("total-hit-host",1,time()+$time); 
   }
   else 
   { 
      
///////////////////////Это короче если не найдено
//Создаём сегоднейшней файл сегоднешнего числа для дальнейшей записи в него............
$f fopen("data/"."$data."."dat""at"); //Создали файл сегоднешнего числа
fclose($f); //Всё, создали теперь закрыли файл...
//Берём из файла первое число, оно у нас в начале 0
$f file("data/"."$data."."dat"); //Берём число из файла сегоднешней даты
$hit $f[0]; //Берём из нулевой строки число
$host $f[1]; //Берём из нулевой строки число
//Пишим в файлик данные за сегодня
$f fopen("data/"."$data."."dat""w");  //Выбераем файл
$hit1=($hit)+1//При заходе добавляем единицу к числу......
$host1=($host)+1;
$str="$hit1"."\r\n"."$host1"//Выбрали что записываем
fputs($f$str); //Записали на одно  число на одну единицу больше
fclose($f); //Закрыли файлик
$time=mktime(0,0,0,date("m"),date("d")+1,date("Y"))-strtotime("now"); 
setcookie("total-hit-host",1,time()+$time); 
   }  
       } 
   }
else
   { 
// если файл пустой просто записываем 

$fp = @fopen("user.dat","a"); 
$count=1
$info "$count::$new_ip::\r\n"
fputs($fp,$info); 
fclose($fp); 
}
?>

   
Rambler's Top100
вверх

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