Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Blokowanie licznika
Mateoo88
post 12.01.2012, 13:12:49
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.01.2012

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


Witam, mam skrypt licznika odwiedzin, bardzo prostego. Licznik działa dobrze a nawet można żec aż za dobrze smile.gif Nalicza każde wejsce na strone nawet gdy się strone odswieży to też nalicza. Czy może ktoś mi pomóc lub nakierować co zrobić aby przyblokować ten licznik tak by naliczał wejscia z jednego adresu co 12h. Z góry dzięki
  1. <?php
  2. $count_my_page = ("hitcounter.txt");
  3. $hits = file($count_my_page);
  4. $hits[0] ++;
  5. $fp = fopen($count_my_page , "w");
  6. fputs($fp , "$hits[0]");
  7. fclose($fp);
  8. echo $hits[0];
  9. ?>
Go to the top of the page
+Quote Post
Ilware
post 12.01.2012, 13:19:14
Post #2





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

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


sposobów zabezpieczeń jest kilka

1- zapisywanie cookie na czas 12h i sprawdzanie czy już takie cookie istnieje - jeżeli nie to inkrementujesz licznik.
2- zapisywanie ip odwiedzającego do bazy i sprawdzanie po ip

+ ew
3 - zabezpieczenie na sesji ale to tylko na okres jednego wejścia na stronę


--------------------
Jeżeli pomogłem kliknij "Pomógł" :)
Go to the top of the page
+Quote Post
Mateoo88
post 12.01.2012, 13:36:11
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.01.2012

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


Zależy mi na prostocie więc wybieram ciasteczka.

do kodu dodałem:
  1. setcookie("visited", "1", time()+3600*3);


wszystko wygląda tak:
  1. <?php
  2. setcookie("visited", "1", time()+3600*3);
  3. $count_my_page = ("hitcounter.txt");
  4. $hits = file($count_my_page);
  5. $hits[0] ++;
  6. $fp = fopen($count_my_page , "w");
  7. fputs($fp , "$hits[0]");
  8. fclose($fp);
  9. echo $hits[0];
  10. ?>


Wyskakuje mi błąd : Warning: Cannot modify header information - headers already sent by (output started at /home/y7828sm/public_html/index.php:8) in /home/y7828sm/public_html/counter.php on line 2

Mam małą więdze n/t php i nie bardzo wiem co robie źle. Prosze o pomoc

Ten post edytował Mateoo88 12.01.2012, 14:11:17
Go to the top of the page
+Quote Post
Ilware
post 12.01.2012, 14:17:29
Post #4





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

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


http://wortal.php.pl/Wortal/Artykuly/PHP/P...ch-programistow

temat wałkowany miliardy razy, nie możesz wysłać nagłówków jak wyślesz już jakieś znaki do przeglądarki.

oprócz tego dodanie tylko tej linii Ci nic nie da, po prostu teraz przy każdym odświeżeniu będzie się tworzyło ciasteczko.musisz sprawdzić czy ciasto istnieje jeżeli nie to tworzysz nowe i inkrementujesz licznik, jeżeli istnieje to nic nie robisz.

Ten post edytował Ilware 12.01.2012, 14:19:39


--------------------
Jeżeli pomogłem kliknij "Pomógł" :)
Go to the top of the page
+Quote Post
Bateria
post 12.01.2012, 14:34:46
Post #5





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


  1. <?php
  2. if(!isset($_COOKIE['licznik'])){
  3. $count_my_page = ("hitcounter.txt");
  4. $hits = file($count_my_page);
  5. $hits[0] ++;
  6. $fp = fopen($count_my_page , "w");
  7. fputs($fp , "$hits[0]");
  8. fclose($fp);
  9. echo $hits[0];
  10. setcookie('licznik', 'licznik', time()+43200);
  11. }
  12. ?>


--------------------
Go to the top of the page
+Quote Post
Mateoo88
post 12.01.2012, 14:46:18
Post #6





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.01.2012

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


Wyskakuje błąd w 10 linijce kodu czyli:
  1. setcookie('licznik', 'licznik', time()+43200);

Dalej nalicza za każdym odświeżeniem strony
Go to the top of the page
+Quote Post
Bateria
post 12.01.2012, 14:59:07
Post #7





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


Zrób to tak jak napisałem i jak będzie dalej błąd to napisz:
1. Do jakiegoś pliku .php wklej kod:
  1. <?php
  2. $count_my_page = ("hitcounter.txt");
  3. $hits = file($count_my_page);
  4. if(!isset($_COOKIE['licznik'])){
  5. $hits[0] ++;
  6. setcookie('licznik', 'licznik', time()+43200);
  7. }
  8. $fp = fopen($count_my_page , "w");
  9. fputs($fp , "$hits[0]");
  10. fclose($fp);
  11. echo $hits[0];
  12. ?>

2. Stwórz plik 'hitcounter.txt' i wpisz w nim wartość 0, nie zostawiaj go pustego.
3. Wyczyść ciacha przeglądarki i odpal skrypt.

ps. Testujesz to na localhost czy wgrałeś na jakiś serwer?

Ten post edytował Bateria 12.01.2012, 15:03:11


--------------------
Go to the top of the page
+Quote Post
Mateoo88
post 12.01.2012, 15:16:07
Post #8





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.01.2012

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


Pliki wgrywam na serwer.
Niestety zrobiłem tak jak napisałeś wyżej i dalej wyskakuje błąd : Warning: Cannot modify header information - headers already sent by (output started at /home/y7828sm/public_html/index.php:7) in /home/y7828sm/public_html/counter.php on line 6

A licznik nalicza kazde odświeżenie strony. Moja skromna wiedza o php dawno się skonczyła wiec prosze o kolejne wskazówki, z góry dziękuje
Go to the top of the page
+Quote Post
Bateria
post 12.01.2012, 15:18:02
Post #9





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


Jak znów nie zadziała, pisz.
  1. <?php
  2. $count_my_page = ("hitcounter.txt");
  3. $hits = file($count_my_page);
  4. if(!isset($_COOKIE['licznik'])){
  5. $hits[0] ++;
  6. setcookie('licznik', 'licznik', time()+43200);
  7. }
  8. $fp = fopen($count_my_page , "w");
  9. fputs($fp , "$hits[0]");
  10. fclose($fp);
  11. echo $hits[0];
  12. ?>


Ten post edytował Bateria 12.01.2012, 15:18:52


--------------------
Go to the top of the page
+Quote Post
Mateoo88
post 12.01.2012, 15:20:14
Post #10





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.01.2012

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


Niestety, to samo tyle, że błąd jest w 7 lini
Go to the top of the page
+Quote Post
Bateria
post 12.01.2012, 15:28:04
Post #11





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


Czy aby Twoja przeglądarka ma na pewno włączoną obsługę ciasteczek?
Wejdź na adres:
http://bateria.ugu.pl/test.php
U mnie to w pełni działa, jeżeli u Ciebie nie będzie to działać wina leży po stronie przeglądarki.

Jak to zrobisz daj znać.

Ten post edytował Bateria 12.01.2012, 15:24:01


--------------------
Go to the top of the page
+Quote Post
Mateoo88
post 12.01.2012, 15:28:30
Post #12





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.01.2012

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


Hmmm no widzisz u mnie działa Twoj link. a moj nie dziala. WWW zobacz sobie skrypt zainstalowalem pod dolna pomarańczową kreską ...
Go to the top of the page
+Quote Post
Bateria
post 12.01.2012, 15:33:16
Post #13





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


Na PW napisałem ci moje gg. Napisz to coś pokombinujemy

Ten post edytował Bateria 12.01.2012, 15:35:19


--------------------
Go to the top of the page
+Quote Post
Ilware
post 12.01.2012, 15:35:49
Post #14





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

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


ob_start umieść na samym początku pliku przed wszystkim, uważaj żeby nie było nawet białego znaku.

  1. <?php
  2. ?>


i powinno być okej


--------------------
Jeżeli pomogłem kliknij "Pomógł" :)
Go to the top of the page
+Quote Post
Bateria
post 12.01.2012, 15:37:53
Post #15





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


No i powinno się na samym końcu

Ja nie zadziała to napisz


--------------------
Go to the top of the page
+Quote Post
Mateoo88
post 12.01.2012, 15:38:32
Post #16





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.01.2012

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


w pliku index.php

  1. <?php
  2. include ("counter.php");
  3. ?>


a w pliku counter.php:
  1. <?php
  2. $count_my_page = ("hitcounter.txt");
  3. $hits = file($count_my_page);
  4. if(!isset($_COOKIE['licznik'])){
  5. $hits[0] ++;
  6. setcookie('licznik', 'licznik', time()+43200);
  7. }
  8. $fp = fopen($count_my_page , "w");
  9. fputs($fp , "$hits[0]");
  10. fclose($fp);
  11. echo $hits[0];
  12. ?>

mam jeszcze ten plik hitcounter.txt ale tam jest tylko:
  1. 1


________EDIT_______
Dodałem do index.php :
  1. <?php ob_start(); ?>

i Działa exclamation.gif!!
Wielkie dzieki Panowie : Bateria i Ilware
Dziekuje za poświęcony czas a żeby nie był on zmarnowany to prosze napiszcie mi co robi ten kod:
  1. <?php ob_start(); ?>



Ten post edytował Mateoo88 12.01.2012, 15:43:44
Go to the top of the page
+Quote Post
Micchaleq
post 12.01.2012, 15:48:10
Post #17





Grupa: Zarejestrowani
Postów: 186
Pomógł: 4
Dołączył: 13.10.2009

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


ob_start

Ten post edytował Micchaleq 12.01.2012, 15:49:38


--------------------
Go to the top of the page
+Quote Post
Mateoo88
post 12.01.2012, 15:57:55
Post #18





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.01.2012

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


Jeszcze jedno pytanie co do kodu:
Jeżeli chcę by cookies odblokowywały się szybciej to fragment kodu:
  1. setcookie('licznik', 'licznik', time()+43200);

zmienić na np
  1. setcookie('licznik', 'licznik', time()+120);


Czy to tylko pomoże? Czy coś jeszcze trzeba zrobić?
Go to the top of the page
+Quote Post
Bateria
post 12.01.2012, 16:16:03
Post #19





Grupa: Zarejestrowani
Postów: 129
Pomógł: 13
Dołączył: 23.11.2011

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


Już tłumaczę:
  1. setcookie('nazwa_ciasteczka', 'wartosc_ciasteczka', time()+99);

Po trzecim przecinku ustalamy po jakim czasie ciastko ma być przestać aktwnę:
time() - wyświetla czas unixowy czyli ile sekund mineło od 1 stycznia 1970r.
time()+100 - ciasteczka dezaktywuje się po 100 sekundach od momentu jego dodania


--------------------
Go to the top of the page
+Quote Post
Mateoo88
post 12.01.2012, 16:41:22
Post #20





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.01.2012

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


Dzięki za pomoc i odpowiedź!
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: 14.08.2025 - 12:36