![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.01.2004 Skąd: Mragowo Ostrzeżenie: (0%) ![]() ![]() |
Witam!!
Mam problem z licznikiem odwiedzin a mianowicie, nie jest odporny na odświeżanie strony, i to troche dziwne gdyż wysyłam cookie zeby tak nie było ![]() plik stats.php [php:1:fd160373a4]<?php <?php include("connect.inc"); function stats() { { $wynik = mysql_query ("SELECT id FROM stats ;"); $liczba = mysql_num_rows($wynik); } return $liczba; } function wstaw_stats($data, $czas, $przegladarka, $system, $ip, $host) { $query = "SELECT * FROM stats "; $wynik = mysql_query($query); $query = "INSERT INTO stats (id, data, czas, przegladarka, system, ip, host) VALUES ('', '$data', '$czas', '$przegladarka', '$system', '$ip', '$host');"; $wynik = mysql_query($query); } $TryCookie=$HTTP_COOKIE_VARS["licznik"]; if(isset($TryCookie)) { $wszystko=stats(); print"Jeste¶ <b> $wszystko</b> osob± odwiedzaj±c± tę stronę"; } else { $data = date("Y-m-d"); $czas = date("H:i:s"); $browser=$_SERVER["HTTP_USER_AGENT"]; $ip=$_SERVER["REMOTE_ADDR"]; $host=gethostbyaddr($ip); if(eregi("msie",$browser) || eregi("compatible",$browser)) { $przegladarka="MS Internet Explorer"; } elseif(eregi("mozilla",$browser) && !eregi("compatible",$browser) || eregi("communicator",$browser)) { $przegladarka="mozilla"; } elseif(eregi("opera",$browser)) { $przegladarka="opera"; } elseif(eregi("lynx",$browser)) { $przegladarka="lynx"; } elseif(eregi("links",$browser)) { $przegladarka="links"; } elseif(eregi("mosaic",$browser)) { $przegladarka="mosaic"; } else { $przegladarka="inna"; } if(eregi("win",$browser) || !eregi("linux",$browser)) { $system="Windows"; } elseif(eregi("linux",$browser)) { $system="Linux"; } elseif(eregi("mac",$browser)) { $system="Macintosh"; } elseif(eregi("sunos",$browser)) { $system="SunOs"; } elseif(eregi("irix",$browser)) { $system="IRIX"; } elseif(eregi("amiga",$browser)) { $system="Amiga"; } elseif(eregi("os/2",$browser)) { $system="OS/2"; } else { $system="inne"; } wstaw_stats($data, $czas, $przegladarka, $system, $ip, $host); $wszystko=stats(); print"Jeste¶ <b> $wszystko</b> osob± odwiedzaj±c± tę stronę"; } ?> ?> ?>[/php:1:fd160373a4] a w piku top.php ktory wywolywany jest na kazdej podstronie znajduje się: [php:1:fd160373a4]<?php <?php ob_start(); setcookie("licznik","2", time()+3600*6); ?>[/php:1:fd160373a4] Pomóżcie bo naprawde nie wiem co robie żle |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 19.02.2004 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
a sporbuj tak?:
[php:1:c7de900c35]<?php include("connect.inc"); function stats() { { $wynik = mysql_query ("SELECT id FROM stats ;"); $liczba = mysql_num_rows($wynik); } return $liczba; } function wstaw_stats($data, $czas, $przegladarka, $system, $ip, $host) { $query = "SELECT * FROM stats "; $wynik = mysql_query($query); $query = "INSERT INTO stats (id, data, czas, przegladarka, system, ip, host) VALUES ('', '$data', '$czas', '$przegladarka', '$system', '$ip', '$host');"; $wynik = mysql_query($query); } //tutaj jest zmiana. poprzednia wersja tej instrukcji sila rzeczy inicjalizuje zmienna (ewentualnie z 'pusta' wartoscia) wiec isset zawsze zwroci prawde. W ten sposob powinno dzialac:) if(isset($HTTP_COOKIE_VARS["licznik"])) { $wszystko=stats(); print"Jeste¶ <b> $wszystko</b> osob± odwiedzaj±c± tę stronę"; } else { $data = date("Y-m-d"); $czas = date("H:i:s"); $browser=$_SERVER["HTTP_USER_AGENT"]; $ip=$_SERVER["REMOTE_ADDR"]; $host=gethostbyaddr($ip); if(eregi("msie",$browser) || eregi("compatible",$browser)) { $przegladarka="MS Internet Explorer"; } elseif(eregi("mozilla",$browser) && !eregi("compatible",$browser) || eregi("communicator",$browser)) { $przegladarka="mozilla"; } elseif(eregi("opera",$browser)) { $przegladarka="opera"; } elseif(eregi("lynx",$browser)) { $przegladarka="lynx"; } elseif(eregi("links",$browser)) { $przegladarka="links"; } elseif(eregi("mosaic",$browser)) { $przegladarka="mosaic"; } else { $przegladarka="inna"; } if(eregi("win",$browser) || !eregi("linux",$browser)) { $system="Windows"; } elseif(eregi("linux",$browser)) { $system="Linux"; } elseif(eregi("mac",$browser)) { $system="Macintosh"; } elseif(eregi("sunos",$browser)) { $system="SunOs"; } elseif(eregi("irix",$browser)) { $system="IRIX"; } elseif(eregi("amiga",$browser)) { $system="Amiga"; } elseif(eregi("os/2",$browser)) { $system="OS/2"; } else { $system="inne"; } wstaw_stats($data, $czas, $przegladarka, $system, $ip, $host); $wszystko=stats(); print"Jeste¶ <b> $wszystko</b> osob± odwiedzaj±c± tę stronę"; } ?>[/php:1:c7de900c35] |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.01.2004 Skąd: Mragowo Ostrzeżenie: (0%) ![]() ![]() |
niestety nadal dodaje odwiedzjacych i zminilem czas cookie na 12 godzin Ja mam wrazenie ze te moje cookie nie dziala
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 19.02.2004 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
a sprawdz wartosc
output_buffering w php.ini powinines wpradze dostawac waringi jesli to wina tego ale zobacz... i sprawdz co Ci wyrzuci Kod print_r($HTTP_COOKIE_VARS);
aha i napisz jaka masz wersje php:) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.01.2004 Skąd: Mragowo Ostrzeżenie: (0%) ![]() ![]() |
Nie mam pojecia mialem output_buffering na off (nie maialem zadnych warningow) zmieniłem na ON i nadal przy odswiezaniu dodaje kolejny wpis do bazy grrr
![]() ![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 0 Dołączył: 19.08.2003 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Masz register_globals off czy on ?
-------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 19.02.2004 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
Sprawdz jeszcze to:
zamiast [php:1:66ff59c510]<?php ob_start(); setcookie("licznik","2", time()+3600*6); ?>[/php:1:66ff59c510] zrob [php:1:66ff59c510]<?php ob_start(); if(!isset($HTTP_COOKIE_VARS["licznik"]) setcookie("licznik","2", time()+3600*6); ?>[/php:1:66ff59c510] co z tym [php:1:66ff59c510]<?php print_r($HTTP_COOKIE_VARS); ?>[/php:1:66ff59c510] ![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.01.2004 Skąd: Mragowo Ostrzeżenie: (0%) ![]() ![]() |
wstawiłem kod ale chyba nie tam gdzie trzeba (po if gdzie ciastko sprawdza) ale nic mi nie zwrociło no to wstawiłem na sam koniec skryptu i tez nic nie pokazało. Szczerze to ja jestem już zielony i to napewno nie od bakania
![]() |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.01.2004 Skąd: Mragowo Ostrzeżenie: (0%) ![]() ![]() |
teraz to mi wywalil:
Parse error: parse error, unexpected T_STRING in c:usrkrasnalwwwwesttop.php on line 3 a i print_r($HTTP_COOKIE_VARS); zwrocił Array ( [licznik] => 1 ) bo zminiłem liczbe cookie z 2 na 1 wiec chyba dobrze zwraca.? a i ustawilem jak bylo czyli na 2 wiec zwrociło Array ( [licznik] => 2 ) wiec teraz wogole nie mam pojecia o co chodzi. Moze Microshit 2k3 juz mi sie skonczył |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 19.02.2004 Skąd: Piaseczno Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem literówke:) Teraz powinno byc ok:)
[php:1:0c385dd10b]<?php ob_start(); if(!isset($HTTP_COOKIE_VARS["licznik"])) setcookie("licznik","2", time()+3600*6); ?>[/php:1:0c385dd10b] To gdzie w koncu wstawiłeś to print_r? |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.01.2004 Skąd: Mragowo Ostrzeżenie: (0%) ![]() ![]() |
no to teraz tylko nie spadnij z krzesła prosze. Dalej odswieza i zwieksza wynik odwiedzin
![]() print_r wstawiłem na sam poczatek dokumentu po wywołaniu ciastak i wskazalo array => 1 dla ciastka z wartoscia 1 i =>2 dla ciastka z wartoscia 2. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.01.2004 Skąd: Mragowo Ostrzeżenie: (0%) ![]() ![]() |
Cytat Masz register_globals off czy on ?
mam na on a i zmieniłem na off i ten sam skutek. Ale jaja chyba ostrego cwieka zabiłem ? ![]() To może poprosze kogoś zebymi pomógł zmodyfikować ten skrypt zeby działa na sesjach a nie na cookie? :? |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 25.03.2004 Skąd: Staszów Ostrzeżenie: (0%) ![]() ![]() |
Na samej górze pliku z licznikiem piszę
[php:1:d5e962b717]<?php session_start(); ?> [/php:1:d5e962b717] A potem w miejscu gdzie mam się pojawić licznik: [php:1:d5e962b717]<?php if(!$dodaj) { session_register("dodaj"); $dodaj = "1"; $conn=mysql_connect("","",""); mysql_select_db("test", $conn); $query = "UPDATE licznik SET wartosc=wartosc+1"; $wynik = mysql_query($query); $zapytanie = "SELECT * FROM licznik WHERE id = 1"; $wykonaj = mysql_query($zapytanie); while($wiersz = mysql_fetch_array($wykonaj)) { print "Stronę odwiedzono już:<b>".$wiersz['wartosc']."</B> razy"; } } else { $conn=mysql_connect("","",""); mysql_select_db("test", $conn); $zapytanie = "SELECT * FROM licznik WHERE id = 1"; $wykonaj = mysql_query($zapytanie); while($wiersz = mysql_fetch_array($wykonaj)) { print "Stronę już:<b>".$wiersz['wartosc']."</B> razy"; } } ?> [/php:1:d5e962b717] Jest to oparte na sesjach i u mnie chodzi. Spróbuj przerobić do swoich potrzeb. Albo przynajmniej popatrz o co w tym chodzi i zrób swój licznik na sesjach. Jak będę miał trochę czasu to pomogę przerobić. No ale napewno nie dziś i nie jutro. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 06:10 |