session_start();
if($_SESSION['count'] == null){
$counter_get = mysql_query('SELECT * FROM `zpp_others` WHERE `id` = "1"');
$counter = mysql_fetch_array($counter_get);
$counter['dane']++;
mysql_query('UPDATE `zpp_others` SET `dane` = "'.$counter['dane'].'" WHERE `id` = "1"');
$_SESSION['count'] = 'no';
}
Całość to prosty licznik oparty na sesjach (zapisuje do bazy danych cyfrę o jeden większą od tej która akurat tam siedzi). I teraz problem - kiedy odświeżam jakąkolwiek stronę w domenie w której znajduje się ten kod - całość za każdym razem zwiększa się o jeden (czyli kod zawsze po odświeżeniu czegokolwiek w domenie się wykonuje). Jakiś system cachowania, czy bug? Dodam, że na IE7 takie dziwne zachowanie nie ma miejsa.
Ryszard napisał(a):
Ja się na tym nie znam i gdybyś zechciał oświecić prostaczka - dlaczego Twoim zdaniem ten kod nie powinien się wykonywać (czyli licznik zwiększać o 1) przy odświeżaniu jakiejkolwiek strony w domenie? Czyli: który kwałek kodu odpowiada za niezwiększanie licznika o 1 przy przeładowaniu?
zetiks napisał(a):
Ponieważ powinien się wykonywać tylko jeśli zmienna count w sesji jest pusta. A na samym końcu ifa przypisuję jej wartość.
Dodane: No ok, jest session_start(), powinno więc chyba działać również z $_SESSION. Spróbuj z tym setcookie. A może wciśnij F12 -> Enable cookies? Plik z licznikiem jest na tym samym serwerze co reszta strony? (Z której wywołujesz licznik)
Zajec napisał(a):
Zrób sobie
print_r($_SESSION);
pod tym kodem.
Ryszard napisał(a):
Originally posted by z_x:
Ponieważ powinien się wykonywać tylko jeśli zmienna count w sesji jest pusta. A na samym końcu ifa przypisuję jej wartość.
kod zawsze po odświeżeniu czegokolwiek w domenie się wykonuje
czyli do przekazywania numeru sescji nie używasz URL (bo byś się nie dziwił, że licznik rośnie), ale używasz cookies. Używana przez Ciebie Opera ma włączone "Akceptuj ciasteczka"?
Co się ma dziać z licznikiem po załadowaniu innej strony? Rozumiem, że nie powinien rosnąć.