Dziwne zachowanie Opery jeśli chodzi o sesje i mysql?

w dziale Wersje beta, testowe i rozwojowe
zetiks napisał(a):

Na początek prosty kod:

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ść.

daroc napisał(a):

A to można sobie tak zapisywać coś do tablicy $_SESSION?
A może spróbuj zapisać to do $_COOKIE?
http://pl.php.net/manual/pl/function.setcookie.php

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ść.

Dziękuję.

To "Skrypt z tego przykładu będzie pamiętał ilość odwiedzin przez cały czas działania przeglądarki, jeśli w przeglądarce włączony jest mechanizm cookies, lub dopóki strona odświeżana jest z takim samym numerem sesji przekazanym przez URL. Ci w niczym nie pomoże? Piszesz, że

Originally posted by z_x:

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ąć.