Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> licznik
kalinowski
post 21.07.2003, 09:25:24
Post #1





Grupa: Zablokowani
Postów: 199
Pomógł: 0
Dołączył: 4.05.2003
Skąd: Tarnowskie Góry

Ostrzeżenie: (10%)
X----


napisalem sobie prosty licznik odwiedzin ktory wyglada tak:
[php:1:538d098489]<?php //licznik oparty na plikach tekstowych winksmiley.jpg
if (!(file_exists("licznik.txt"))) {
$plik = fopen ("licznik.txt", "w+");
fputs ($plik, "-");
fclose ($plik);
}
$ile = filesize ("licznik.txt");
$plik = fopen ("licznik.txt", "a");
flock ($plik, 2);
fputs ($plik, "-");
flock ($plik, 3);
fclose ($plik);
print "Licznik odwiedzin: <b>$ile</B><br><i>(od 20.07.2003)</I>";
?>
[/php:1:538d098489]

jakzrobic aby licznik ten nie dzialal na odswierzanie


--------------------
<b>Aktualnie:</b> Blog version 1.0 (www.blog.sej.pl) [b] lllllllll 100%
[b]Dodatki: lll
Go to the top of the page
+Quote Post
zulus
post 21.07.2003, 09:32:58
Post #2





Grupa: Zarejestrowani
Postów: 225
Pomógł: 18
Dołączył: 30.06.2003
Skąd: Wrocław

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


użyj cookies
Go to the top of the page
+Quote Post
Omega
post 21.07.2003, 11:22:52
Post #3





Grupa: Zarejestrowani
Postów: 273
Pomógł: 0
Dołączył: 5.05.2003
Skąd: Mazury

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


Stwórz oddzielny plik, licznikip.txt i zapisuj do niego datę oraz IP. Następnie przy każdym odświerzaniu sprawdzaj czy już dzisiaj przypadkiem nie było takiego IP.

np.:
plik licznikip.txt
Kod
64534563 // znacznik czasu unixa

246.54.233.5

246.54.654.87


dalej...

[php:1:375e2cef56]<?php
$data = file("licznikip.txt");
if ($data[0] > time()+(60*60*24)) {
fopen("licznikip.txt", "w");
}
$plik = implode(" " file("licznikip.txt"));
if ( eregi("$ip", $plik)) {
//tutaj kod licznika jeżeli danego ip nie było
} else {
echo "sory ale już dzisiaj tu byłeś...";
}
?>[/php:1:375e2cef56]
Myślę że to powinno działać, chociaż nie testowałem... biggrin.gif


--------------------
<<< EB >>>
Go to the top of the page
+Quote Post
GeoS
post 21.07.2003, 11:54:01
Post #4





Grupa: Zarejestrowani
Postów: 602
Pomógł: 0
Dołączył: --
Skąd: W - WA -> GRO

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


Uzyc sesji tongue.gif


--------------------
Zanim zadasz pytanie, zawsze wczesniej zajrzyj do manuala ( pl.php.net/manual/pl/ ).
Szukasz skryptow - www.hotscripts.com
Go to the top of the page
+Quote Post
Kinool
post 21.07.2003, 12:26:25
Post #5





Grupa: Zarejestrowani
Postów: 560
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Kwidzyn

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


hmm cookie jest chyba najprostrszym i najlepszym rozwiazaniem bo:

1. w przypadku dynamicznego IP ktos kto obladal strone zostanie zaliczony potem ktos inny moze miec te IP i co?questionmark.gif nie zostanie zaliczony
2. niektre kompy sa w sieci lokalne z wyjsciem na net tylko z jednego kompa (udostepnianie polaczenia) i kazdy z tych kompow na zewnatrz ma takie same IP wiec nawet jesli w takiej sieci jest 100 kompow i kazdy z nich bedze wchodzil na strone to zaliczony zostanie tylko jeden.

3. Niekotry wchodza na strone kilkakrotnie np, 2, 3, 10 razy dzienni i to jest wizyta danego usera (co innego jest nabijanie licznika przez odswierzanie)

przydatnosc ciasteczka do sporzycia mozna ustawic np na 15-20 minut (mozna powiedziec ze tyle mniejwiecej osoba siedzi sobie na stronie i cos przeglada)

jezeli po godzinie wejdzie na strone to zostanie zaliczona ale jezeli w cigu tych 15-20 minut bedzie chodzila po stronie to niebedzie zaliczana wiec nie bedzie sztucznych nabic licznika
Go to the top of the page
+Quote Post
kalinowski
post 21.07.2003, 12:32:49
Post #6





Grupa: Zablokowani
Postów: 199
Pomógł: 0
Dołączył: 4.05.2003
Skąd: Tarnowskie Góry

Ostrzeżenie: (10%)
X----


Cytat
hmm cookie jest chyba najprostrszym i najlepszym rozwiazaniem bo:

1. w przypadku dynamicznego IP ktos kto obladal strone zostanie zaliczony potem ktos inny moze miec te IP i co?questionmark.gif nie zostanie zaliczony
2. niektre kompy sa w sieci lokalne z wyjsciem na net tylko z jednego kompa (udostepnianie polaczenia) i kazdy z tych kompow na zewnatrz ma takie same IP wiec nawet jesli w takiej sieci jest 100 kompow i kazdy z nich bedze wchodzil na strone to zaliczony zostanie tylko jeden.

3. Niekotry wchodza na strone kilkakrotnie np, 2, 3, 10 razy dzienni i to jest wizyta danego usera (co innego jest nabijanie licznika przez odswierzanie)

przydatnosc ciasteczka do sporzycia mozna ustawic np na 15-20  minut (mozna powiedziec ze tyle mniejwiecej osoba siedzi sobie na stronie i cos przeglada)

jezeli po godzinie wejdzie na strone to zostanie zaliczona ale jezeli w cigu tych 15-20 minut bedzie chodzila po stronie to niebedzie zaliczana wiec nie bedzie sztucznych nabic licznika


moze jakis przyklad z cookie


--------------------
<b>Aktualnie:</b> Blog version 1.0 (www.blog.sej.pl) [b] lllllllll 100%
[b]Dodatki: lll
Go to the top of the page
+Quote Post
Kinool
post 21.07.2003, 12:39:04
Post #7





Grupa: Zarejestrowani
Postów: 560
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Kwidzyn

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


ja mam zrobione tak:

kod pliku do liczenia:
[php:1:d099b041d8]<?php

$fp=fopen("./coun/licznik.txt","r");
flock($fp,1);
$count=fgets($fp,20);
flock($fp,3);
fclose($fp);


if($odwiedziny!="tak") { // to jest sprawdzenie czy cooki jest na dysku klienta

$fw=fopen("./coun/licznik.txt","w");
flock($fw,2);
$count=$count+1;
fputs($fw,$count);
flock($fw,3);
fclose($fw);
}

echo ("Ilosc odwiedzin<br> od 14.07.2003: $count");


?>[/php:1:d099b041d8]


a na glownej stronie dajesz cos takiego
[php:1:d099b041d8]<?php

setcookie("odwiedziny",tak,time()+600);

?>[/php:1:d099b041d8]

600 = 10 minut

acha i pamietaj zeby ciasteczko wpisac na samym poczatku przed <head>
Go to the top of the page
+Quote Post
kalinowski
post 21.07.2003, 22:42:45
Post #8





Grupa: Zablokowani
Postów: 199
Pomógł: 0
Dołączył: 4.05.2003
Skąd: Tarnowskie Góry

Ostrzeżenie: (10%)
X----


Cytat
ja mam zrobione tak:

kod pliku do liczenia:
[php:1:b7da8b3d2f]<?php

   $fp=fopen("./coun/licznik.txt","r");
   flock($fp,1);  
   $count=fgets($fp,20);
   flock($fp,3);
   fclose($fp);


  if($odwiedziny!="tak") { // to jest sprawdzenie czy cooki jest na dysku klienta
     
   $fw=fopen("./coun/licznik.txt","w");
   flock($fw,2);
   $count=$count+1;
   fputs($fw,$count);
   flock($fw,3);
   fclose($fw);
}
 
   echo ("Ilosc odwiedzin<br> od 14.07.2003: $count");


?>[/php:1:b7da8b3d2f]


a na glownej stronie dajesz cos takiego
[php:1:b7da8b3d2f]<?php

setcookie("odwiedziny",tak,time()+600);

?>[/php:1:b7da8b3d2f]

600 = 10 minut

acha i pamietaj zeby ciasteczko wpisac na samym poczatku przed <head>


nie dziala tak jak ma bo jak odswierzam to i tak powieksza sie liczba na liczniku


--------------------
<b>Aktualnie:</b> Blog version 1.0 (www.blog.sej.pl) [b] lllllllll 100%
[b]Dodatki: lll
Go to the top of the page
+Quote Post
spenalzo
post 21.07.2003, 22:46:12
Post #9





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


1. Przez przesady z cytowaniem.
2. Zastosuj tablice globalne $_COOKIE.


--------------------

Go to the top of the page
+Quote Post
kalinowski
post 22.07.2003, 09:28:41
Post #10





Grupa: Zablokowani
Postów: 199
Pomógł: 0
Dołączył: 4.05.2003
Skąd: Tarnowskie Góry

Ostrzeżenie: (10%)
X----


Cytat
1. Przez przesady z cytowaniem.
2. Zastosuj tablice globalne $_COOKIE.


moze jakas podpowiedz


--------------------
<b>Aktualnie:</b> Blog version 1.0 (www.blog.sej.pl) [b] lllllllll 100%
[b]Dodatki: lll
Go to the top of the page
+Quote Post
Omega
post 22.07.2003, 19:42:20
Post #11





Grupa: Zarejestrowani
Postów: 273
Pomógł: 0
Dołączył: 5.05.2003
Skąd: Mazury

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


Muwię zrób na plikach z IP... Tak ja pisałem wcześniej, na pewno będzie działać... Do tak prostego skryptu pliki są lepszym rozwiązaniem...


--------------------
<<< EB >>>
Go to the top of the page
+Quote Post
spenalzo
post 24.07.2003, 23:57:09
Post #12





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Cytat
Cytat
2. Zastosuj tablice globalne $_COOKIE.

moze jakas podpowiedz

Zamiast odwoływać się do zmiennej zapisanej w ciastku poprzez $odwiedziny odwołaj się poprzez $HTTP_COOKIE_VARS["odwiedziny"]

Omega: a co jeżeli więcej osób korzysta z jednego ip, np. w małej sieci? Poza tym IP w Polsce często jest dynamicznie przydzielane, więc może się zdarzyć, że np. następnego dnia ktoś całkowicie mi obcy będzie chciał zagłosować, a nie bęzie mogł bo ma takie samo IP. I po trzecie - do Mozilli jest dodatek (chyba się proctor zwie), który umożliwia zmianę numeru IP - też odpada. Nie ma rozwiązania idealnego, ale ja proponuję:
1. sprawdzić czy użtkownik może zapisywać ciastka
2a. jeżeli tak to może głosować
2b. jeżeli nie to nie może
itd


--------------------

Go to the top of the page
+Quote Post
Bakus
post 17.12.2003, 01:59:53
Post #13


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

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


A nie można zrobić logowania użytkowników...
W bazie przechowujesz np. nazwę usera, hasło i inne potrzebne Ci dane i datę ostatniego głosowania...
Jest to chyba najskuteczniejsze rozwiązanie...


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
dragonballpj
post 18.12.2003, 18:24:28
Post #14





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 11.06.2002

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


Kod
<?

# Database server to connect to

$dbhost  =    "localhost";

# Database to use

$db  =    "mysql";

# Database username

$dbuser  =    "root";

# Database password

$dbpasswd    =    "krasnal";

# Table to use

$table  =    "counter";



mysql_connect("$dbhost","$dbuser","$dbpasswd")

    or die("Unable to connect to SQL server!");

@mysql_select_db("$db")

    or die("Unable to select database!");



if(!$name) { $name = "default"; }



$query = mysql_query("select * from $table where name="$name"");

while ($row  =  mysql_fetch_array($query)) {

  $start = $row[start];

  $count = $row[count];

}



if(!$count) {

    mysql_query("insert into $table values (current_date()+0,"1","$name")");

    $count = "1";

}



print("$count");

if($_COOKIE['glosowales']==1){



}else{

setcookie("glosowales", "1", time()+3600*24);



$count++;

mysql_query("update $table set count="$count" where name="$name"");



}

?>

[sql:1:cf27b94039]CREATE TABLE counter (
START date default NULL,
count int(20) unsigned default NULL,
name char(255) NOT NULL default '',
PRIMARY KEY (name)
) TYPE=MyISAM;
[/sql:1:cf27b94039]


--------------------
Elwis żyje i sprzedaje kartofle!!!
Go to the top of the page
+Quote Post
Bakus
post 18.12.2003, 22:24:58
Post #15


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

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


@dragonballpj: Zmień znaczniki [CODE] na [php]


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
cipojsza
post 12.01.2004, 11:00:25
Post #16





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 4.01.2004
Skąd: Gdańsk

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


Cytat
A nie można zrobić logowania użytkowników...
W bazie przechowujesz np. nazwę usera, hasło i inne potrzebne Ci dane i datę ostatniego głosowania...
Jest to chyba najskuteczniejsze rozwiązanie...

Tylko jeszcze musisz zmusi uzytkownikow do logowania, biorac pod uwage przypadkowych userow, raczej nie zda to egzaminu. biggrin.gif
Go to the top of the page
+Quote Post
cipojsza
post 21.01.2004, 22:44:55
Post #17





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 4.01.2004
Skąd: Gdańsk

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


kalinowski byc moze uzyles tego kodu w funkcji (tak jak ja), wtedy musisz pamietac o przekazaniu zmiennej ciasteczka => $odwiedziny do wnetrza funkcji, teraz mi dziala na zwykłych cookies bez zadnych tablic biggrin.gif

Mam teraz takie pytanie, w zwiazku z tym iz rozpocząłem prace nad wlasnym licznikiem i sa one zaawansowane,
mam problem jednak robiac projekt "admina" tych statystyk,
potzrebuje wygenerowac wykresy odwiedzin w miesiącach tygodniach czy dniach, jakiej tu funkcji bym musial uzyc?
bo z grafiki to jestem zielony 8)
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: 12.07.2025 - 06:01