[php] Problem z sesją na nowym serwerze

0

Witam, doznałem dziwnego problemu.

Miałem stronę na serwerze A, gdzie wszystko działało ok.
Teraz muszę się przenieść na serwer B, gdzie sesja nie działa poprawnie.

Różnice widoczne są takie, że na tym niedziałającym register globals jest wyłączone, ale to mnie nie dotyczy, bo wszystko robię poprzez tablice(lokalnie też wyłączyłem i działa).
Poza tym ustawienia sesyjne są takie same.

Więc co może być nie tak?
Najlepiej będzie, jak zobaczycie to na własnej skórze.

Strona działająca: www.neurotic.art.pl
Strona niedziałająca: http://kkw.prohost.pl/neurotic.art.pl/

Zróbcie taki test.
Załóżcie konto(nie trzeba maila podawać), zostaniecie automatycznie zalogowani. Polatajcie po stronie(zauważcie po jakich podstronach chodzicie). Następnie spróbujcie się wylogować. Na stronie działającej nie ma problemu, natomiast na stronie niedziałającej, nie można się wylogować. Tzn. niby użytkownik zostaje wylogowany, ale wystarczy wejść na jakąś podstronę, na której się było będąc zalogowanym i sesja jakby powraca. Nie można się wylogować.

Czym takie zachowanie może być spowodowane?

Kod do wylogowania, który używam:

unset($_SESSION["wart1"]);
unset($_SESSION["wart2"]);
...
0

wcale nie powraca tylko wyświetla stronę z cache przeglądarki, ctrl+f5 i jesteś "wylogowany"
spowodowane pewnie tym że na działającym serwerze, serwer wysyłał nagłówek dla stron który nie pozwalał przeglądarce ich buforować, a ten serwer nie wysyła
w sumie dziwne ...

0

a może session_destory() ??

0

w praktyce:

działający serwer wysyła:

Date Fri, 12 Sep 2008 1658 GMT
Server Apache/1.3.41 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8d mod_spambot/0.46
Set-Cookie neurotic=1
Keep-Alive timeout=15, max=5
Connection Keep-Alive
Transfer-Encoding chunked
Content-Type text/html; charset=iso-8859-2

a niedziałający:

Date Fri, 12 Sep 2008 1645 GMT
Server Apache/2.2.8 (Unix) mod_ssl/2.2.8 OpenSSL/0.9.8g FrontPage/5.0.2.2635 mod_auth_passthrough/2.1 mod_bwlimited/1.4
X-Powered-By PHP/5.2.5
Set-Cookie neurotic=1
Cache-Control max-age=300
Expires Fri, 12 Sep 2008 1645 GMT
Vary Accept-Encoding
Content-Encoding gzip
Content-Length 2556
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Content-Type text/html

co oznacza że przeglądarka wyśle żądanie o nową stronę dopiero po 5 minutach (i wtedy dopiero zobaczysz wylogowanie)

0

ja sie zalogowalem i szybko wylogowalem, co od razu zobaczylem.

0
gfdghfdg napisał(a)

co oznacza że przeglądarka wyśle żądanie o nową stronę dopiero po 5 minutach (i wtedy dopiero zobaczysz wylogowanie)

A mogę to jakoś obejść? Żeby widoczne było od razu?

0

nadpisz te nagłówki przez php:

teoretycznie:

Header('Cache-Control: max-age=0');
Header('Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // dowolna data w przeszłości

w praktyce polecane jest:

header('Cache-Control: no-cache, must-revalidate'); // zgodność z HTTP/1.1
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // dowolna data w przeszłości
header('Pragma: no-cache'); // to zazwyczaj się pomija, nie wiem dla jakiej to przeglądarki
0

Czyli lepiej zastosować i teorię i praktykę tylko że tu:
MT");
Będzie syntax error ponieważ powinno być:
MT');

1 użytkowników online, w tym zalogowanych: 0, gości: 1