Автор Тема: помогите с счетчиком  (Прочитано 11875 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн qik

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 265
  • +0/-0
  • 0
    • Просмотр профиля
    • http://zapostil.ru/
помогите с счетчиком
« : 24 Июля 2002, 00:49:52 »
у меня есть счетчик :

<?php
$total_data
="base.dat";
$online_data="online.dat";
$time=time();
$now=(int)(time()/86400);
$past_time=time()-600;

$readdata=fopen($online_data,"r") or die("Не могу открыть файл $online_data");
$online_data_array=file($online_data);
fclose($readdata);

if(
getenv(\'HTTP_X_FORWARDED_FOR\'))
        $user=getenv(\'HTTP_X_FORWARDED_FOR\');
else
        $user=getenv(\'REMOTE_ADDR\');

$d=count($online_data_array);
for($i=0;$i<$d;$i++)
        {
        list($live_user,$last_time)=explode("::","$online_data_array[$i]");
        if($live_user!=""&&$last_time!=""):
        if($last_time<$past_time):
                $live_user="";
                $last_time="";
        endif;
        if($live_user!=""&&$last_time!="")
                {
                if($user==$live_user)
                        {
                        $online_array[]="$user::$time\\r\\n";
                        }
                else
                        $online_array[]="$live_user::$last_time";
                }
        endif;
        }

        if(isset($online_array)):
        foreach($online_array as $i=>$str)
                {
                if($str=="$user::$time\\r\\n")
                        {
                        $ok=$i;
                        break;
                        }
                }
        foreach($online_array as $j=>$str)
                {
                if($ok==$j) { $online_array[$ok]="$user::$time\\r\\n"; break;}
                }
       endif;

$writedata=fopen($online_data,"w") or die("Не могу открыть файл $online_data");
flock($writedata,2);
if($online_array=="") $online_array[]="$user::$time\\r\\n";
foreach($online_array as $str)
        fputs($writedata,"$str");
flock($writedata,3);
fclose($writedata);

$readdata=fopen($online_data,"r") or die("Не могу открыть файл $online_data");
$online_data_array=file($online_data);
fclose($readdata);
$online=count($online_data_array);

$f=fopen($total_data,"a");
$call="$user|$now\\n";
$call_size=strlen($call);
flock($f,2);
fputs($f, $call,$call_size);
flock($f,3);
fclose($f);

$tarray=file($total_data);
$total_hits=count($tarray);

$today_hits_array=array();
for($i=0;$i<count($tarray);$i++)
        {
        list($ip,$t)=explode("|",$tarray[$i]);
        if($now==$t) { array_push($today_hits_array,$ip); }
        }
$today_hits=count($today_hits_array);

$total_hosts_array=array();
for($i=0;$i<count($tarray);$i++)
        {
        list($ip,$t)=explode("|",$tarray[$i]);
        array_push($total_hosts_array,$ip);
        }
$total_hosts=count(array_unique($total_hosts_array));

$today_hosts_array=array();
for($i=0;$i<count($tarray);$i++)
        {
        list($ip,$t)=explode("|",$tarray[$i]);
        if($now==$t) { array_push($today_hosts_array,$ip); }
        }
$today_hosts=count(array_unique($today_hosts_array));

$im=imageCreateFromPNG ("counter.png");
$white=imageColorAllocate($im, 255,255,255);
$black=imageColorAllocate($im, 0,0,0);
@imageString ($im, 1, 5, 1, "online      " .$online, $black);
@imageString ($im, 1, 5, 8, "total hosts ".$total_hosts, $black);
@imageString ($im, 1, 5, 15, "today hosts ".$today_hosts, $black);
header ("Content-type: image/png");
imagePNG ($im);
imageDestroy ($im);
?>


нужно сделать к нему .htm(или .php) файл с log:
дата время/ip/server/на каких страницах был/от куда пришел/куда ушел
и чтоб эта страница была запоролена
за помощи БОЛЬШОЕ СПАСИБО......

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
помогите с счетчиком
« Ответ #1 : 24 Июля 2002, 10:31:50 »
Ух ты, какой молодец. Прямо Штырлыц какой-то. И где был ему надо знать, и куда ушел.... Тут тебе придется сиильно постараться. А именно, активно использовать сессии... А log писать нетрудно - собираешь инфу, скажем, в массив, затем
$info=implode(\'/\',$info_array);
а затем
$file=fopen(\'mylog.txt\',\'a\');
$fwrite($file,$info);
fclose($file);
TANSTAAFL

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
помогите с счетчиком
« Ответ #2 : 24 Июля 2002, 11:26:23 »
Maniac
Ага. Щаззз.
Сессии тут совсем не нужны.
Просто рефера ловишь.
Или вообще можно логи сервака разбирать, если к ним доступ есть.
AS IS...

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
помогите с счетчиком
« Ответ #3 : 24 Июля 2002, 12:26:44 »
Цитировать
Сессии тут совсем не нужны.
Просто рефера ловишь.

А юзера как определять будем? IMHO сессии для того и были изобретены
TANSTAAFL

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
помогите с счетчиком
« Ответ #4 : 24 Июля 2002, 12:29:59 »
Maniac
И чего ты по ним определишь такого, что нужно для счетчика?
AS IS...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
помогите с счетчиком
« Ответ #5 : 24 Июля 2002, 12:32:59 »
Maniac
У меня есть такой примитивный счетчик - все, что нужно пишет в логи и сессий там никаким боком.
Всю историю хожения человека по сайту там видно.
AS IS...

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
помогите с счетчиком
« Ответ #6 : 24 Июля 2002, 12:34:35 »
Цитировать
ThE0ReTiC  

Это, конечно, здорово, но только по IP-шнику определять юзера - не слишком корректно
TANSTAAFL

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
помогите с счетчиком
« Ответ #7 : 24 Июля 2002, 12:37:31 »
Maniac
А как ты его еще можешь определить?
AS IS...

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
помогите с счетчиком
« Ответ #8 : 24 Июля 2002, 12:59:24 »
Привет qik.
Ты всё ещё со счетчиком паришься?
Цитировать
дата время/ip/server/на каких страницах был/от куда пришел/куда ушел

Надо сначала все переменные писать в файл.
date/$REMOTE_ADDR/????server???/делаешь выборкой из файла/getenv("HTTP_REFERER")/куда ушел - вродь мона тока по своему сайту.
А потом выбирать тока те которые тебе нужны, напр. групируя их.
Цитировать
и чтоб эта страница была запоролена

Ну эт можно по глупому
if ($pass!=\'your_pass\') die("Пароль плиzzz");
, мона ч/з сессии мутить, а мона ч/з .htaccess
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн qik

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 265
  • +0/-0
  • 0
    • Просмотр профиля
    • http://zapostil.ru/
помогите с счетчиком
« Ответ #9 : 24 Июля 2002, 15:05:59 »
посоветуйте что-нибудь конкретное

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
помогите с счетчиком
« Ответ #10 : 24 Июля 2002, 15:27:04 »
qik Опять что ли ленишься?
Попробуй сначала сделать, а потом когда где-то что-то не получиться, то приведи кусок кода разберёмся что не так.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн qik

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 265
  • +0/-0
  • 0
    • Просмотр профиля
    • http://zapostil.ru/
помогите с счетчиком
« Ответ #11 : 25 Июля 2002, 00:58:48 »
да мне хотяб приметивный лог из ip, time, date и severa

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
помогите с счетчиком
« Ответ #12 : 25 Июля 2002, 09:18:43 »
Когда в base.dat пишешь ip и time (fwrite), то пиши ещё доп. инфу, ч/з разделитель (у тя вродб "|").
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн qik

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 265
  • +0/-0
  • 0
    • Просмотр профиля
    • http://zapostil.ru/
помогите с счетчиком
« Ответ #13 : 25 Июля 2002, 11:35:08 »
скрипт в base.dat пишет подобный лог :

194.190.156.197|11877
194.190.156.197|11877
194.190.156.197|11877
194.190.156.197|11877
194.190.156.197|11877
194.190.156.197|11877
194.190.156.197|11878
194.190.156.197|11878
194.190.156.197|11878
194.190.156.197|11878
194.190.156.197|11878
195.90.153.13|11879
195.90.153.15|11879
195.90.153.28|11880
195.90.153.5|11880
195.122.213.97|11881
195.90.153.5|11883
194.190.156.197|11883

после разделителя что ?

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
помогите с счетчиком
« Ответ #14 : 25 Июля 2002, 12:03:35 »
У тя
Цитировать
194.190.156.197|11877
194.190.156.197|11877
194.190.156.197|11877

А ты пиши:

194.190.156.197|11877|откуда_пришёл(напр.)
194.190.156.197|11877|откуда_пришёл(напр.)
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28