Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> licznik online- ilość osób przy linku do strony, licznik online- ilość osób przy linku do strony
krys76
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.07.2008

Ostrzeżenie: (0%)
-----


Witam
Czy jest jakiś licznik, który by wyświetlał przy linku do danej strony ilość osób online (włącznie z zerem przy braku osób )

tak jak przy linkach do czatów np:
gry1- online 21
gry2- online 0
Ewentualnie jak zmodyfikować istniejące skrypty.

Mający wyłączanie IP (roboty wyszukiwarki) i odporny na odświeżanie.
Może być ewentualnie taki, który pokazuje czy ktoś jest online czy nie ma nikogo wogóle np:
gry1- użytkownicy online-tak
gry2- uż. online -brak
Dziękuje
krzysztof
Go to the top of the page
+Quote Post
ShadowD
post
Post #2





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

Ostrzeżenie: (0%)
-----


Hmmm, na pewno łatwo nie będzie z znalezieniem czegoś podobnego ale możesz się pokusić by napisać własny, napisze Ci jak miało by to wyglądać.

www.qw.pl - strona główna
www.licznki.qw.pl - strona z licznikiem

1. Najpierw musisz załatwić sobie wszystkie ip robotów itd.
2. Przy wejściu na www.qw.pl zapisujesz w bazie ip i aktualną godzinę jeśli jest to jakieś ip robota to nic nie robisz.
3. Na stronie www.licznki.qw.pl sprawdzasz czy istnieje jakiś rekord kturego data nie jest starsza nisz 5 min jeśli istnieje to zliczasz wszystkie takie rekordy i poprostu wyświetlasz tą liczbę na stronie.

Ten skrypt będzie pokazywał wszystkich obecnych z ostatnich 5 minut możesz się pokusić o zmianę nawet do 30 sec ale musisz mieć na uwadze, że nie każdy odświeża stronę co 30 sec zawsze może coś dłuższego czytać...

Mam nadzieję, że pomogłem dopowiem zarazem, że można coś podobnego napisać w ajax i pewnie będzie skuteczniejsze ale jest to sporo więcej zabawy.
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #3





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Proszę, mi działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?php
  2. class onlineInfo
  3. {
  4.  
  5. static $dir='.';
  6. static $dataFile;
  7. private $maxLastSeenTime=240;
  8. private $userOnList=false;
  9.  
  10.  
  11. public function __construct()
  12. {
  13.  
  14. self::$dataFile=self::$dir.'/temp/usersOnline.tmp';
  15. if(!file_exists(self::$dataFile))
  16. {
  17. $this->save();
  18. }
  19.  
  20. $this->userIp=$_SERVER['REMOTE_ADDR'];
  21. $this->load();
  22. $this->checkVisitors();
  23. $this->save();
  24.  
  25. }
  26.  
  27. private function load()
  28. {
  29. $this->data=file(self::$dataFile);
  30. $count=count($this->data);
  31. if($count>0)
  32. {
  33.  
  34. for($i=0;$i<$count;++$i)
  35. {
  36. $this->data[$i]=trim($this->data[$i]);
  37. $this->userInfo[$i]=explode("|", $this->data[$i]);
  38. if($this->userInfo[$i][0]==$this->userIp)
  39. {
  40. $this->userOnList=true;
  41. $this->lastAvtivityTime=$this->userInfo[$i][0];
  42. }
  43. }
  44. }
  45.  
  46. if(!$this->userOnList)
  47. {
  48.  
  49. $this->userInfo[$count][0]=$this->userIp;
  50. $this->userInfo[$count][1]=time();
  51. }
  52.  
  53. }
  54.  
  55. function checkVisitors()
  56. {
  57. $count=count($this->userInfo);
  58. $currentTime=time();
  59. if($count>0)
  60. {
  61. for($i=0;$i<$count;++$i)
  62. {
  63. if($this->maxLastSeenTime<=($currentTime-$this->userInfo[$i][1]))
  64. {
  65. if($this->userInfo[$i][0]==$this->userIp)
  66. {
  67. $this->userInfo[$i][1]=time();
  68. continue;
  69. }
  70. unset($this->userInfo[$i]);
  71. }
  72. else
  73. {
  74. if($this->userInfo[$i][0]==$this->userIp)
  75. {
  76. $this->userInfo[$i][1]=time();
  77. }
  78. }
  79. }
  80. }
  81. }
  82.  
  83. public function getVisitors()
  84. {
  85. return count($this->userInfo);
  86. }
  87.  
  88. function save()
  89. {
  90. $string='';
  91. $count=count($this->userInfo);
  92.  
  93. $this->saveArray=array();
  94. $this->userInfo=array_merge($this->saveArray, $this->userInfo);
  95.  
  96. $lineEnd="\n";
  97. if($count>0)
  98. {
  99. for($i=0;$i<$count;++$i)
  100. {
  101. if($i==$count-1)
  102. {
  103. $lineEnd='';
  104. }
  105. if(is_array($this->userInfo[$i]))
  106. {
  107. $string.=implode("|", $this->userInfo[$i]).$lineEnd;
  108. }
  109. }
  110. }
  111. file_put_contents(self::$dataFile, $string);
  112. }
  113. }
  114. ?>
Go to the top of the page
+Quote Post
krys76
post
Post #4





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 2.07.2008

Ostrzeżenie: (0%)
-----


Cysiaczek czy ten skrypt trzeba wkleić przy linku czy do osobnego pliku i jakiś skrypt do tego pliku bo u mnie nie działa?
Go to the top of the page
+Quote Post
carbolymer
post
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 12
Dołączył: 27.01.2007
Skąd: north              Poziom: 158                     Tytuł: Miszcz

Ostrzeżenie: (0%)
-----


krys76, to jest biblioteka której musisz użyć a nie click&run skrypt ;]
  1. <?
  2. $oInfo = new onlineInfo;
  3. $oInfo->load();
  4. $oInfo->checkVisitors();
  5. echo $oInfo->getVisitors();
  6. $oInfo->save();
  7. ?>

I to bodajże powinno wyświetlić ci ten licznik ;]

Ten post edytował carbolymer 3.07.2008, 21:56:39
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #6





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Wystarczy krócej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
  1. <?php
  2. $oInfo = new onlineInfo();
  3. print 'ilośc osób online: '.$oInfo->getVisitors();
  4. ?>


Będzie działać, tylko nie zapomnij ustawić własnego pliku i ściezki oraz chmod ustawić (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 21:21