Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] licznik, z bajerami xD
shpyo
post 5.11.2004, 21:57:20
Post #1





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

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


  1. <?php
  2.  
  3. /**
  4. * licznik odwiedzin strony v1.0
  5. * @autor Piotr 'shpyo' Cichosz <piotrek@widok2.net>
  6. * struktura pliku \"licznik.dat\":
  7. * aktulny_dzien||ile_wczoraj||ile_dzisiaj||w_sumie
  8. *
  9. */
  10.  
  11. $arrFile = array();
  12. $arrPlik = array();
  13.  
  14. if( $_COOKIE[ 'licznik' ] )
  15. {
  16. $arrFile = file( &#092;"licznik.dat\" );
  17. $arrPlik = explode(&#092;"||\", $arrFile[0]);
  18. }
  19.  
  20. else
  21. {
  22. setcookie('licznik', '1', time()+(3600*24));  //ustawienie ciasteczek na 24h
  23. $arrFile = file( &#092;"licznik.dat\" );
  24. $arrPlik = explode(&#092;"||\", $arrFile[0]);
  25.  
  26. if( $arrPlik[0] == date(&#092;"d\") )
  27. {
  28. $arrPlik[2]++;  //zwiększenie ilości w dzisiejszym dniu
  29. $arrPlik[3]++;  //zwiększenie ogólnej liczby odwiedzin
  30. }
  31.  
  32. else
  33. {
  34. $arrPlik[0] = date(&#092;"d\");  //nadanie nowej daty
  35. $arrPlik[1] = $arrPlik[2];  //zapamiętanie ile osób odwiedziło stronę wczoraj
  36. $arrPlik[2] = 1;  //ustawienie nowej wartości dla dzisiaj
  37. $arrPlik[3]++;  //zwiększenie ogólnej liczby odwiedzin
  38. }
  39.  
  40. $temp = implode(&#092;"||\", $arrPlik);
  41. $arrFile = fopen( &#092;"licznik.dat\", 'w');
  42. fwrite($arrFile, $temp);
  43. fclose($arrFile);
  44. $arrFile = file( &#092;"licznik.dat\" );
  45. $arrPlik = explode(&#092;"||\", $arrFile[0]);
  46. }
  47.  
  48. echo 'odwiedziło nas: <b>' . $arrPlik[3] . '</b><br />
  49. wczoraj: <b>' . $arrPlik[1] . '</b><br />
  50. dzisiaj: <b>' . $arrPlik[2] . '</b>';
  51.  
  52. ?>


co myślicie o tym?
fajne? Pierwsza z moich publikacji która "idzie" w świat ;].
czekam na uwagi, pytania itp.

działanie można zobaczyć tu: http://widok2.net/~piotrek/licznik/

Ten post edytował shpyo 6.11.2004, 07:54:08


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
Vertical
post 6.11.2004, 11:32:42
Post #2





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

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


Dobry pomysł. Zwłaszcza podoba mi się to, że pokazuje, ilu ludzi odwiedziło wczoraj i dzisiaj.
Go to the top of the page
+Quote Post
trucksweb
post 6.11.2004, 20:14:15
Post #3





Grupa: Zarejestrowani
Postów: 1 199
Pomógł: 31
Dołączył: 22.03.2004
Skąd: Warszawa

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


ciekway licznik !!tylko jakas grafike sie doda i jest super ! Podoba mi sie gdyz bardzo malo zajmuje ! tongue.gif


--------------------
Rozmawia dwóch dyrektorów:
- Jaki jest twój ideał sekretarki?
- 20-letnia dziewczyna z 30-letnim doświadczeniem.
Go to the top of the page
+Quote Post
hwao
post 6.11.2004, 20:57:08
Post #4


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




ale jak gosc ma wylaczone cookie to moe nastukac 1000 odwiedzin w ciagu 7 s ;-)
Proponowalbym to zabezpieczyc
Go to the top of the page
+Quote Post
mike
post 6.11.2004, 23:07:16
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(hwao @ 2004-11-06 21:57:08)
ale jak gosc ma wylaczone cookie to moe nastukac 1000 odwiedzin w ciagu 7 s ;-)
Proponowalbym to zabezpieczyc

To fakt zabezbieczyc można.

Ale z drugiej strony : ranking ...
Go to the top of the page
+Quote Post
bela
post 7.11.2004, 00:34:39
Post #6


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


  1. <?php
  2. /**
  3. * licznik odwiedzin strony v1.0
  4. * @autor Piotr 'shpyo' Cichosz <piotrek@widok2.net>
  5. * struktura pliku \"licznik.dat\":
  6. * aktulny_dzien||ile_wczoraj||ile_dzisiaj||w_sumie
  7. *
  8. */
  9. ?>


pisze się @author winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
shpyo
post 7.11.2004, 08:35:33
Post #7





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

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


@hwao: mike_mech dobrze gada :-) więc jak narazie nie widzę potrzeby, no chyba że ludzie poczują potrzebę wiedzy o ciasteczkach to wtedy....

@bela_666: a o ustawie o języku polskim słyszał ? tongue.gif


--------------------
Go to the top of the page
+Quote Post
kubatron
post 7.11.2004, 10:05:55
Post #8





Grupa: Zarejestrowani
Postów: 581
Pomógł: 0
Dołączył: 21.07.2003
Skąd: Jasło

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


Cytat(shpyo @ 2004-11-07 09:35:33)
@bela_666: a o ustawie o języku polskim słyszał ? tongue.gif

Tak, tylko że akurat @author się pisze a nie @autor smile.gif


--------------------
„Człowiek jest wielki nie przez to, co posiada, lecz przez to, kim jest;
nie przez to, co ma, lecz przez to, czym dzieli się z innymi.”
Jan Paweł II
Go to the top of the page
+Quote Post
mike
post 8.11.2004, 09:48:28
Post #9





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Ja tylko dodam że kod można znacznie skrócić ( o ile piszemy w PHP5 ) stosując:
1. file_get_contents() ;
2. file_put_contents() .
Go to the top of the page
+Quote Post
Vengeance
post 8.11.2004, 16:03:59
Post #10





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

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


mozna zasotoswać polimorfizm czyli trzymac skrypt i liczbe odwiedzin w jednym pliku edytującym samego siebie. choc nie wiek jak wtedy ma sie sprawa z blokowaniem dostepu


--------------------
Go to the top of the page
+Quote Post
mike
post 8.11.2004, 22:40:06
Post #11





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Vengeance @ 2004-11-08 16:03:59)
mozna zasotoswać polimorfizm czyli trzymac skrypt i liczbe odwiedzin w jednym pliku edytującym samego siebie. choc nie wiek jak wtedy ma sie sprawa z blokowaniem dostepu

O jakim ty polimorfizmie mówisz questionmark.gif
Bo ja przez polimorfizm rozumiem:

Polimorfizm możemy określić jako wirtualizację operacji; jest to możliwość dynamicznego (późnego, realizowanego w fazie wykonania) wiązania nazwy operacji do wielu implementacji (metod) tej operacji w różnych klasach pozostających w relacji dziedziczenia. Wiązaniu towarzyszy mechanizm wyboru konkretnej implementacji. Wybór implementacji zależy od nazwy metody oraz od typu dynamicznego tego obiektu, dla którego została wywołana operacja, a nie od typu zmiennej, wskazującej ten obiekt.
Go to the top of the page
+Quote Post
Vengeance
post 9.11.2004, 14:14:32
Post #12





Grupa: Zarejestrowani
Postów: 657
Pomógł: 2
Dołączył: 15.08.2003
Skąd: Łódź

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


Hmm mi chodzilo o cos takiego jak np. sa wirusy polimorficzne.
Czyli za każdą infekcją zmieniają swój kod tak aby antywirus nie mógł go łatwo wykyrwać.

Czyli jak dla mnie polimorfizm to 'proces' zmieniania przez aplikacje kodu jej samej.


--------------------
Go to the top of the page
+Quote Post
shpyo
post 9.11.2004, 16:12:30
Post #13





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

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


a o to i wersja DELUX (czyli w wersji obiektowej - fajne to jest! :-) )

  1. <?php
  2.  
  3. /****
  4. ** licznik odwiedzin strony v1.0
  5. ** @author Piotr 'shpyo' Cichosz <piotrek@widok2.net> //dedykowane bela_666;-)
  6. ** struktura pliku \"licznik.dat\" :
  7. ** aktualny_dzien||ile_wczoraj||ile_dzisiaj||w_sumie
  8. ****/
  9.  
  10. class Licznik
  11. {
  12.  
  13. var $dzisiaj; //liczba wejść w dzisiejszym dniu
  14. var $wczoraj; //liczba wejść we wczorajszym dniu
  15. var $w_sumie; //ogólna liczba wejść
  16. var $dzien;  //numer dnia
  17.  
  18. function ustawZmienne()
  19. {
  20. $arrFile = array();
  21. $arrDane = array();
  22. $arrFile = file(&#092;"licznik.dat\");
  23. $arrDane = explode(&#092;"||\", $arrFile[0]);
  24. $this->dzien = $arrDane[0];
  25. $this->dzisiaj = $arrDane[2];
  26. $this->wczoraj = $arrDane[1];
  27. $this->w_sumie = $arrDane[3];
  28. }
  29.  
  30.  function pokazDane()
  31. {
  32. echo 'w sumie: <b>'.$this->w_sumie.'</b><br />
  33. wczoraj: <b>'.$this->wczoraj.'</b><br />
  34. dzisiaj: <b>'.$this->dzisiaj.'</b><br />';
  35. }
  36.  
  37. function zapiszDane()
  38. {
  39. $arrFile = fopen( &#092;"licznik.dat\", 'w');
  40. fwrite($arrFile, &#092;"$this->dzien||$this->wczoraj||$this->dzisiaj||$this->w_sumie\");
  41. fclose($arrFile);
  42. }
  43.  
  44.  function zwiekszDane()
  45. {
  46. $this->dzisiaj++;
  47. $this->w_sumie++;
  48. }
  49.  
  50.  function przeladujLicznik()
  51. {
  52. $this->dzien = date(&#092;"d\");
  53. $this->wczoraj = $this->dzisiaj;
  54. $this->dzisiaj = 1;
  55. $this->w_sumie++;
  56. $this->zapiszDane();
  57. }
  58.  
  59. function sprDate()
  60. {
  61. if( $this->dzien == date(&#092;"d\") )
  62. {
  63. $this->zwiekszDane();
  64. $this->zapiszDane();
  65. $this->pokazDane();
  66. }
  67. else
  68. {
  69. $this->przeladujLicznik();
  70. $this->pokazDane();
  71. }
  72. }
  73.  
  74. }
  75.  
  76. $objLicznik = new Licznik;
  77. $objLicznik->ustawZmienne();
  78.  
  79.  
  80. if( isset ( $_COOKIE[ 'licznik' ] ) )
  81. {
  82.  $objLicznik->pokazDane();
  83. }
  84. else
  85. {
  86. setcookie('licznik', '1', time()+(60*60));
  87. $objLicznik->sprDate();
  88. }
  89.  
  90.  
  91. ?>


--------------------
Go to the top of the page
+Quote Post
scanner
post 9.11.2004, 18:40:30
Post #14





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




A gdzie się podział konstruktor w tej klasie?
Dla jakiej wersji php to jest napisane?

Kiepsko zaprojektowana klasa.
Jak dla mnie powinny być metody typu:
  1. <?php
  2.  
  3. $Counter->getYesterday();
  4. $Counter->getToday();
  5. $Counter->getTotal();
  6. $Counter->getByDate( $iTimestamp );
  7.  
  8. ?>

metody te zwracały by int jako wynik a echo by sie działo już w głownym skrypcie...


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
shpyo
post 9.11.2004, 20:29:23
Post #15





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

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


Wiesz scanner, to jest mój pierwszy skrypt pisany obiektowo. Fakt, może jest źle zaprojektowane, ale działa biggrin.gif.

Też myślałem aby wyciągać odpowiednie dane metodami, ale to by mi tylko klasę powiększyło. Zaczynam się przykonuwać co do klas w php. Jest to bardzo uzyteczne, pod warunkiem że się ją dobrze zaplanuje haha.gif.


--------------------
Go to the top of the page
+Quote Post
Mamber
post 26.11.2004, 12:20:05
Post #16





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 25.10.2004

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


Mi wyskakuje cos takiego:

Kod
Warning: Cannot modify header information - headers already sent by (output started at /home/.../public_html/test/index.php:123) in /home/.../public_html/test/index.php on line 431
odwiedziło nas: 2
wczoraj:
dzisiaj: 2


Na mojej stronie linia 431 wyglada tak:

  1. <?php
  2. setcookie('licznik', '1', time()+(3600*24));  //ustawienie ciasteczek na 24h
  3. ?>


Jak to naprawić ?
Go to the top of the page
+Quote Post
shpyo
post 26.11.2004, 13:59:53
Post #17





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

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


  1. <?php
  2. ?>


trzeba dać to na samym początku strony na której jest licnik!


--------------------
Go to the top of the page
+Quote Post
Strzałek
post 27.11.2004, 11:51:41
Post #18





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

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


Cytat(mike_mech @ 2004-11-08 08:48:28)
Ja tylko dodam że kod można znacznie skrócić ( o ile piszemy w PHP5 ) stosując:
1. file_get_contents() ;
2. file_put_contents() .

http://pl.php.net/manual/pl/function.file-get-contents.php

Tam jest coś takiego:

Manual php napisał:
Cytat("Manual php mówi:")
file_get_contents

(php 4 >= 4.3.0, php 5)


więc żeby użyć tych funkcji wystarczy mieć php 4.3.0 nowsze

a co do klasy. To funkcję ustaw zmienne możesz zrobić konstruktorem ...

Ten post edytował Strzałka 27.11.2004, 11:52:49


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 27.11.2004, 12:40:24
Post #19





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
file_get_contents
(php 4 >= 4.3.0, php 5)
więc żeby użyć tych funkcji wystarczy mieć php 4.3.0 nowsze

Nie tych ale tej: dla file_get_contents wystarczy 4.3.0 ale file_put_contents jest dostepne dopiero od wersji 5.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 22.06.2025 - 18:09