Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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
dublinka
post
Post #2





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

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


Przeciez masz tam warunek mowiacy ze jesli ip jest takie samo jak w pliku LUB czas zapisany w pliku jest mniejszy od aktualnego czasu to ma usunac zawartosc.
Wiec jesli wejdziesz z tego ip po minucie czy godzinie czy sekundzie nawet jak czas nie uplynie to wpisy sie usuna. Jesli chcesz aby dwa warunki sie spelnialy musisz zamienic || na &&
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, 16:54:23 ) *
Przeciez masz tam warunek mowiacy ze jesli ip jest takie samo jak w pliku LUB czas zapisany w pliku jest mniejszy od aktualnego czasu to ma usunac zawartosc.
Wiec jesli wejdziesz z tego ip po minucie czy godzinie czy sekundzie nawet jak czas nie uplynie to wpisy sie usuna. Jesli chcesz aby dwa warunki sie spelnialy musisz zamienic || na &&


Mógłbyś wysłać cały kod z twoją poprawką? bo ja nie wiem dokładnie w którym miejscu mam zmienić a nie za bardzo znam się w php, i pytanie czyli jak zrobię tą zmianę o której mówisz to powinien ten licznik działać już poprawnie? w sensie co 24h reset?
Go to the top of the page
+Quote Post
dublinka
post
Post #4





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 #5





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
dublinka
post
Post #6





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

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


Jak nke umiesz sam to sciagnij jakis skrypt do statystyk
Go to the top of the page
+Quote Post
spielman
post
Post #7





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

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


Cytat(dublinka @ 30.12.2020, 17:27:59 ) *
Jak nke umiesz sam to sciagnij jakis skrypt do statystyk


Nie umiem znaleźć właśnie takiego po ip który zlicza ze wszystkim podstron :/
Go to the top of the page
+Quote Post
dublinka
post
Post #8





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

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


Z tego co sie orietuje to musisz kod podawac na kazdej z oodstron. Skad skrypt ma wiedziec kto, gdzie wszedl.
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: 22.08.2025 - 12:18