Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z sesjami
Forum PHP.pl > Forum > PHP
tomek1908
Witam,
czy macie jakiś pomysł, dlaczego sesja na mojej witrynie działa odpowiednio na Google Chrome, a na Mozilli Firefox i innych przeglądarkach nie działa?
Nadmieniam również, że sesje na tej samej witrynie na localhoscie działają bez zarzutu, tak więc problem może leżeć po stronie serwera.

Wiecie może jak zmienić ustawienia dla SESSION na serwerze?
by_ikar
Kod
Wiecie może jak zmienić ustawienia dla SESSION na serwerze?


http://www.php.net/manual/pl/ref.session.php cała gama funkcji, do wyboru, do koloru. Plus możesz napisać swój mechanizm sesji.

Odnośnie "nie działania sesji". To w jaki sposób przechowujesz identyfikator sesji? W ciachu? Jako phpsid (url) ?
tomek1908
Dzięki za link. smile.gif

Do tej pory na serwerze robiłem session_start(); i potem wpisywałem np. do $_SESSION['u'] jakąś wartość i wszytko było OK. Teraz nagle problemy się zaczęły na serwerze zewnętrznym, ponieważ na serwerze lokalnym (localhoscie) wszystko jest ok. Zauważyłem również, że wartość session_id(); jest stała w danej sesji na localhoscie, natomiast na serwerze po każdym odświeżeniu jest zmienna. Wiesz może jak to zrobić, aby to session_id() gdzieś przechowywać, aby było niezmienna po każdym odświeżeniu?
Sephirus
session_id powinno być domyslnie przechowywane w ciasteczku PHPSESSID (czy jakoś tak). Coś możesz mieć pokićkane na tym serwerze zewnętrznym.

Możesz spróbować startować sesję tak:



I ogólnie poeksperymentować z session_set_cookie_params() polecam też odczyt tego co serwer daje w standardzie w session_get_cookie_params();

HTH! wink.gif
tomek1908
Zastosowałem:
session_set_cookie_params(0);
session_start();

Problem istnieje cały czas. Mam takie oto ustawienia pobrane za pomocą session_get_cookie_params():

lifetime => 0
path => /
domain =>
secure =>
httponly =>

lifetime => 0? Czy to oznacza, że czas życia mojej sesji wynosi 0? Dlaczego te problemy mogły wystąpić tak nagle skoro nic nie zmieniałem na swoim serwerze?
Jak mogę spowodować, aby session_id() było niezmienne? Teraz po każdym odświeżeniu ciągle się zmienia, co oznacza, że moje sesje nie działają. Chciałbym, aby PHPSESSID było przechowywane w ciasteczkach, wiecie jak to zrobić?

Pozdrawiam.
Sephirus
Hmm co do samego problemu to jeszcze nie mam pomysłu, ale co do lifetime = 0 to jest ok. "0" oznacza "nieskończoność" w teorii (czyli do zamknięcia przeglądarki) ;P

Hmm sam wynik session_get_cookie_params jest u Ciebie ok :/

1. Ok puść taki skrypt u siebie i zobacz czy trzyma sesje (odśwież parę razy):

  1.  


2. To samo z tym kodem:

  1. ini_set("session.use_cookies", "on");
  2. ini_set("session.use_trans_sid", "off");
  3.  


3. Jeśli nadal nic to wklej na forum wynik tego kodu po paru odświeżeniach najelpiej wklej parę treści po kolei):

  1. ini_set("session.use_cookies", "on");
  2. ini_set("session.use_trans_sid", "off");
  3. echo 'COOKIE_ID: '.$_COOKIE['PHPSESSID'].'<br/>';
  4.  
  5. echo 'SESSION_ID: '.session_id().'<br/>';



HTH :/
tvister
Kiedyś coś czytałem że w nazwie domeny dla utrzymania sesji w IE nie może wystąpić podkreślenie "_".
Ale pewności nie mam.
tomek1908
Niestety nic nie pomogło. sad.gif

Odnośnie tego co napisał Sephirus, oto moje wyniki, które uzyskałem wykonując kod z punktu 3:

COOKIE_ID:
SESSION_ID: 3c9cbe02ab93b20dd6645f8974ba7513

COOKIE_ID:
SESSION_ID: dc24796bf4b955645a1d4807bc6f77d0

COOKIE_ID:
SESSION_ID: 3f672ae631bb9eb88e84fc26257cfb69

itd.... ciagle sie zmienialo SESSION_ID.

Coś musi być z tymi ciasteczkami $_COOKIE['PHPSESSID'], skoro nic się nie wyświetla przy COOKIES, tylko co skoro na localhoście wszystko ok działa:

COOKIE_ID: kgel86k695ak4ljl8qqtggks74
SESSION_ID: kgel86k695ak4ljl8qqtggks74

COOKIE_ID: kgel86k695ak4ljl8qqtggks74
SESSION_ID: kgel86k695ak4ljl8qqtggks74

COOKIE_ID: kgel86k695ak4ljl8qqtggks74
SESSION_ID: kgel86k695ak4ljl8qqtggks74

itd... ciagle to samo.

Pozdrawiam. Macie jeszcze jakiś pomysł? Może po prostu ciasteczka nie są zapisywane, jak je uruchomić, aby w $_COOKIE['PHPSESSID'] była jakaś wartośćquestionmark.gif
dublinka
Przyklad podaj jak to robisz.

generalnie sesja trzyma do zamkniecia przeglarki - jesli codzi o IE to musisz zamknac tez inne okna nie tylko to jedno.
Jakos nie chce mi sie wierzyc ze masz taki problem.Jesli niczego nie skopales w kodzie to wrzuc na inny serwer i zobacz wynik.
tomek1908
Jak już wcześniej wspomniałem wykonuję to za pomocą kodu z punktu 3. ,który podał Sephirus:

  1. ini_set("session.use_cookies", "on");
  2. ini_set("session.use_trans_sid", "off");
  3. echo 'COOKIE_ID: '.$_COOKIE['PHPSESSID'].'<br/>';
  4.  
  5. echo 'SESSION_ID: '.session_id().'<br/>';


Na dowód sami możecie sprawdzić wyniki na dwóch serwerach. Plik index.php wyświetlany w poniższych linkach jest taki sam:

http://tmk1908.cba.pl/
http://wimperga.com/

Problemem jest brak wyświetlania wartości COOKIE ID dla przypadku serwera, na którym jest wimperga.com. Jakie ustawienia serwera mogły to zmienić?
mortus
Użyj phpinfo() i porównaj ustawienia związane z przechowywaniem sesji (ktoś już podał odnośnik do manuala).
Sephirus
Ok sprawdziłem te strony w przypadku 1szej po pierwszym wywołaniu identyfikator sesji wyświetlany jest ok, z ciasteczka tego już nie ma. (nie jest jeszcze ustawione dla PHP).

Sprawdziłem ciasteczka w przeglądarce - okazuje się że ciasteczko PHPSESSID jest ustawione i to dokładnie na tą samą wartość co session_id().

Odświeżam stronę - patrzę a sesja jest normalnie trzymana, oba identyfikatory się wyświetlają, są takie same i nie zmieniają się - wniosek:

Z mojej strony wszystko wygląda ok.

Daj znać czy coś zmieniałeś - bo jak dla mnie to działa bez zarzutu.

Co do drugiej strony http://wimperga.com/ to faktycznie coś nie gra

Serwer w ogóle nie wysyła w nagłówkach "set-cookie":

Kod
Date    Mon, 31 Oct 2011 08:38:16 GMT
Server    Apache
X-Powered-By    PHP/5.2.17
Content-Length    68
Connection    close
Content-Type    text/html


Zatem ciasteczko nie ma prawa się pojawić...

Linijka, którą ci podałem "ini_set("session.use_cookies", "on");" powinna to wymusić ale sprawdź może jak to jest w tym pliku ini.

Domyślne ustawienia to http://php.net/manual/en/session.configuration.php

Może coś tam masz pogmatwane.

tomek1908
Usunąłem cały plik php.ini, ponieważ były tam tylko 3 linijki kodu:

  1. register_globals = 1;
  2. upload_max_filesize = 100000B;
  3. safe_mode=Off;


Zauważyłem, że nie mogę wyświetlić na serwerze funkcji phpinfo(), z kolei na localhoscie juz mogę.

Tak samo nie mogę wyświetlić żadnych wartości pokazanych tutaj: http://php.net/manual/en/session.configuration.php
oprócz session_name, session_id.

Nie wiem co mam robić. Macie jeszcze jakiś pomysł? Czemu w ogóle serwer nie wysyła w nagłókach "set-cookie" questionmark.gif

Pozdrawiam.




by_ikar
Zwróć się z tym problemem do swojego usługodawcy, o ile to jest serwer współdzielony, gdzie nie odpowiadasz ty za oprogramowanie.
tomek1908
Problem rozwiązany, odpowiedź znalazłem w innym wątku na tym forum, choć skoro nikt nie pamiętał, że odpowiedź na ten problem został rozwiązany w innym wątku to może nawet i dobrze, że założyłem taki temat, ponieważ na pewno przyda się nam to na przyszłość:

http://forum.php.pl/index.php?showtopic=85888

Pozdrawiam i dziękuję wszystkim za pomoc. smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.