Forum Webscript.Ru
		Программирование => PHP => Тема начата: qik от 24 Июля 2002, 00:49:52
		
			
			- 
				у меня есть счетчик :
 
 $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        {
 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        {
 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        {
 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/на каких страницах был/от куда пришел/куда ушел
 и чтоб эта страница была запоролена
 за помощи БОЛЬШОЕ СПАСИБО......
- 
				Ух ты, какой молодец. Прямо Штырлыц какой-то. И где был ему надо знать, и куда ушел.... Тут тебе придется сиильно постараться. А именно, активно использовать сессии... А log писать нетрудно - собираешь инфу, скажем, в массив, затем 
 $info=implode(\'/\',$info_array);
 а затем
 $file=fopen(\'mylog.txt\',\'a\');
 $fwrite($file,$info);
 fclose($file);
- 
				Maniac 
 Ага. Щаззз.
 Сессии тут совсем не нужны.
 Просто рефера ловишь.
 Или вообще можно логи сервака разбирать, если к ним доступ есть.
- 
				Сессии тут совсем не нужны.
 Просто рефера ловишь.
 
 А юзера как определять будем? IMHO сессии для того и были изобретены
- 
				Maniac 
 И чего ты по ним определишь такого, что нужно для счетчика?
- 
				Maniac 
 У меня есть такой примитивный счетчик - все, что нужно пишет в логи и сессий там никаким боком.
 Всю историю хожения человека по сайту там видно.
- 
				ThE0ReTiC   
 Это, конечно, здорово, но только по IP-шнику определять юзера - не слишком корректно
- 
				Maniac 
 А как ты его еще можешь определить?
- 
				Привет qik.
 Ты всё ещё со счетчиком паришься?
 дата время/ip/server/на каких страницах был/от куда пришел/куда ушел 
 Надо сначала все переменные писать в файл.
 date/$REMOTE_ADDR/????server???/делаешь выборкой из файла/getenv("HTTP_REFERER")/куда ушел - вродь мона тока по своему сайту.
 А потом выбирать тока те которые тебе нужны, напр. групируя их.
 и чтоб эта страница была запоролена 
 Ну эт можно по глупому
 if ($pass!=\'your_pass\') die("Пароль плиzzz");
 , мона ч/з сессии мутить, а мона ч/з .htaccess
- 
				посоветуйте что-нибудь конкретное
			
- 
				qik Опять что ли ленишься?
 Попробуй сначала сделать, а потом когда где-то что-то не получиться, то приведи кусок кода разберёмся что не так.
- 
				да мне хотяб приметивный лог из ip, time, date и severa
			
- 
				Когда в base.dat пишешь ip и time (fwrite), то пиши ещё доп. инфу, ч/з разделитель (у тя вродб "|").
			
- 
				скрипт в 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
 
 после разделителя что ?
- 
				У тя
 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|откуда_пришёл(напр.)
- 
				да нет "11877" что это за цифра ???
			
- 
				qik 
 Елки, чтож ты в своем скрипте разобраться не можешь?
 
 $now=(int)(time()/86400);
 ...
 $call="$user|$now\\n";
 
 Замечаешь связь?
- 
				ThE0ReTiC эт скприпт не qik\'а. Взял его где-то. Я ему недельки 2 назад доооолго объяснял, как текстовый счётчик заменить на графику (поиск).
 ThE0ReTiC ему надо, либо полуфабрикат сделать, либо дай ему ссылки для начинающих и на ман. (у тя их много)
- 
				Alexandr 
 Пожалста:
 ссылки для начинающих  
 http://detail.phpclub.net
 http://php.spb.ru
 http://forums.webscript.ru/search.php
 http://www.php.net/manual/en/
 
 Где в сети лежат учебники по математики за 5 класс общеобразовательной школы - я не знаю.
 
 То, что он его взял где-то а не сваял сам - непринципиально.
 Однако то, что он не может разобраться в программе на уровне логики ее работы - удручает.
- 
				все мы гении, но в своей сфере.
			
- 
				дайте ссылку на нормальный минуал по php.......пожалуйста
			
- 
				http://www.php.net/manual/en/
 
 Нормальный... Гы...
- 
				qik 
 дайте ссылку на нормальный минуал по php 
 А чем тебе моя ссылка не понравилась?
 Тебе с перламутровыми пуговицами обязательно или все-таки учиться начнем?
- 
				кто меня учить будет ????? кому я нужен, а все таки php с самых азов изучать нужно, но как ?
			
- 
				qik 
 Ты неисправим.
 Ты можешь дойти до книжного магазина и купить книгу, если манал прочитать не в состоянии?
 Сходи в конце-концов на webclub и почитай русский перевод мана под РНР3 - это даст тебе самые базовые знания.
 Поищи по этому форуму - ждесь есть ссылка на тот же ман в PDF формате.
 
 И запомни - учиться ты должен сам, и только сам.
 1. Изучи синтаксис.
 2. Разбери примеры.
 3. Попробуй написать похожий скрипт сам.
 4. Разбирай чужие скрипты, чтобы понять как они работают.
 5. И пиши, пиши, пиши... сам. :)
 
 Ты можешь спросить, но твои вопросы должны быть четкие и по делу.
 Если ты будешь спрашивать о вещях, описанный в мане, факе и прочих легкодоступных вещах - тебя к ним и отошлют.
 Так не проще ли начать читать самому, не дожидаясь отсыла?
- 
				ждесь есть ссылка на тот же ман в PDF формате. 
 
 кде ?
- 
				qik 
 Я ж тебе говорю - поищи на форуме. не помню точно.ъ
 Прояви изобретательность.
 Лежит она точно.
- 
				у меня инет медленный и дорогой =(
			
- 
				qik 
 А тебе нужно чтобы всё на блюдечке с голубой каемочкой принесли? Или ты думаешь, что всем здесь интернет бесплатно дается?
 Извини, но это уже называется наглостью.
- 
				хорошая у вас тут атмосфера, дружеская.
			
- 
				qik 
 Послушай.
 Не надо прыгать выше головы.
 Если ты не можешь написать даже текстовый счетчик - зачем браться за графический?
 Учись потихоньку, пиши сначала несложные скрипты. постепенно научишься.
 А так, как ты хочешь, чтобы за тебя просто написали все - это немножко попахивает наглостью.
 Если у тебя такой дорогой интернет - поставь спайлог и не мучайся.
 Соразмеряй желания и средства.
 А если уж замахнулся не дело не по силам, то уж не перекладывай его на чужие плечи.
- 
				что такое спайлог ? а в остольном я стабой согласен....
			
- 
				а потом не в счетчике дело, нужет просто хорошой статистический скрипт......искал везде, но вот засада нигде нет.......может что посоветуете ?
			
- 
				что такое спайлог ?  
 
 МАМА!!!!!!!! ПАПА!!!! СВЯТЫЕ УГОДНИКИ!!!!
- 
				Ты, когда по сайтам ходишь, не замечал такие маленькие прямоугольнички с цыфирками?
 А кликать по ним не пробовал?
- 
				Посоветовать я много не могу.
 У меня на сайте собирается статистика.
 А потом анализируется в соответствии с теми запросами, которые у меня есть к статистике.
 
 Вот и ты так делай.
 Собирай статистику. Потом поставь перед собой один критерий - хостов в день. И решай его. Возникнут вопросы - задавай.
 Решишь - поднимай следующий.
- 
				spylog не подходит - он платный, а hotlog уже стоит.....
			
- 
				А чем тебя не устраивает Хотлог?
 И какие тебе нужны платные функции Спайлога?
- 
				вужна оперативность......
			
- 
				В каком смысле - оперативность?
 Не мог бы ты писать чуть развернутее?
 Вроде бы, спайлог никогда не тормозил.