Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrypt liczący ilość wejść w ciągu 24h - a resetuje się co X czas
spielman
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 29.12.2020

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


Cześć, mam skrypt który zlicza ilość unikalnych wejść na moją stronę w ciągu 24h, wszystko fajnie ale nie resetuje się co 24h tylko co mniej, na razie raz zresetował się po 12h raz po połtorej, ktoś widzi jakiś problem? dodatkowo chciałbym by nie zerował się co 24h (tak jak jest dotychczas) tylko by usuwał adresy IP które są dłużej niż 24h i żeby była taka płynna wymiana, ale to drugoplanowo, najbardziej zależy mi by naprawić działanie skryptu (IMG:style_emoticons/default/smile.gif)
  1. <?php
  2.  
  3. //add_comment.php
  4.  
  5. $plik = "online_24.txt";
  6. $czas = 24*60*60;
  7. $t = time();
  8. $ip=$_SERVER['REMOTE_ADDR'];
  9. $u = explode("\n", str_replace("\r", "", @join("", @file($plik))));
  10. foreach($u as $i => $v) {
  11. $e = explode("|", $v);
  12. if($e[0] == $ip || $e[1] < $t) unset($u[$i]);
  13. }
  14. $u[] = $ip . "|" . ($t + $czas);
  15. $fp = fopen($plik, "w");
  16. flock($fp, 2);
  17. fputs($fp, join("\n", $u));
  18. flock($fp, 3);
  19. fclose($fp);
  20. $output='<span class="icon-user-2" >24h: '.count($u).'</span>';
  21. echo $output;
  22. ?>


Ten post edytował spielman 29.12.2020, 13:50:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dublinka
post
Post #2





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


  1. $ip && $e[1]


Sens tego jest taki ze zapisuje sie ip i czas w postaci unixowego stempla czasu ( timestamp ) Czyli ciąg znaków jaki minął od 1//1/1970 do momentu az odpalisz skrypt plus wlasnie doba wliczona w sekundach.
Jesli zmienisz znak || na && to dwa warunki musza sie spelnic. Czyli IP i (tutaj nastepuje sprawdzenie czy czas zapisany+doba jest mniejszy od aktualnego pobranego z f. time() ) Jesli IP odwedzajacego bedzie cały czas takie samo i czas wiekszy od aktualnego to kazda odslona spowoduje dodanie się nowej linii. Jesli IP bedzie inne ale czas tez wiekszy od aktualnego to tez doda sie nowa linia.
Obydwa warunki musza sie spelniac. Jesli zmienisz tzn zostawisz to tak jak jest to wystarczy ze za kazdym razem kiedy wywolasz plik z takiego samego ip wtedy beda dane sie usuwaly nawet jak czas jeszcze "zyje"

Odpowiadajac na pytanie o reset. Nie nie bedzie.

W takiej formie z && usuniecie nastapi przy tym samym ip i czasie ktory uplynie

Ten post edytował dublinka 29.12.2020, 20:04:30
Go to the top of the page
+Quote Post
spielman
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 29.12.2020

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


Cytat(dublinka @ 29.12.2020, 23:09:29 ) *
  1. $ip && $e[1]


Sens tego jest taki ze zapisuje sie ip i czas w postaci unixowego stempla czasu ( timestamp ) Czyli ciąg znaków jaki minął od 1//1/1970 do momentu az odpalisz skrypt plus wlasnie doba wliczona w sekundach.
Jesli zmienisz znak || na && to dwa warunki musza sie spelnic. Czyli IP i (tutaj nastepuje sprawdzenie czy czas zapisany+doba jest mniejszy od aktualnego pobranego z f. time() ) Jesli IP odwedzajacego bedzie cały czas takie samo i czas wiekszy od aktualnego to kazda odslona spowoduje dodanie się nowej linii. Jesli IP bedzie inne ale czas tez wiekszy od aktualnego to tez doda sie nowa linia.
Obydwa warunki musza sie spelniac. Jesli zmienisz tzn zostawisz to tak jak jest to wystarczy ze za kazdym razem kiedy wywolasz plik z takiego samego ip wtedy beda dane sie usuwaly nawet jak czas jeszcze "zyje"

Odpowiadajac na pytanie o reset. Nie nie bedzie.

W takiej formie z && usuniecie nastapi przy tym samym ip i czasie ktory uplynie


Dzięki, sprawdzę jutro czy zadziała (IMG:style_emoticons/default/smile.gif)

@dublinka, a masz może pomysł jak zrobić zliczanie ze wszystkich podstron, nie tylko ze strony na której jest skrypt?

Ten post edytował spielman 30.12.2020, 14:30:54
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 12.10.2025 - 06:15