Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Sesje ktorych nie ma
Forum PHP.pl > Forum > Przedszkole
Wolfie
Witam

Mam taki kawalek kodu :
  1. function mailbox() {
  2. echo 'login';
  3. $_SESSION['login'] = $_POST['mailbox'];
  4. $_SESSION['pass'] = $_POST['pass'];
  5. if(($this->model->connect('gmail.com',$_SESSION['login'],$_SESSION['pass'],'993','imap')) == false) {
  6. $this->view = new LoginView;
  7. $this->view->display('login');
  8. echo 'Niepoprawny login lub hasło!';
  9. } else {
  10. echo 'Zalogowany!';
  11. $this->model->inbox();
  12. $view = new LoginView;
  13. $boxes = $this->model->getMailboxes();
  14. $msgsParts = $this->model->getMsgsParts(333);
  15. $view->setVars('boxes', $boxes);
  16. $view->setVars('parts',$msgsParts);
  17. $view->display($_POST['action']);
  18. }
  19. }


Jak widac przekazywane tu sa zmienne $_POST i zapisywane do sesji, na podstawie tych zmiennych ktore juz sa zmiennymi $_SESSION nastepuje połączenie do skrzynki pocztowej.
Ten skrypt dziala i połaczenie nastepuje pomyslnie, z czego wynika ze zmienne sesyjne istnieja.
Tylko ze problem polega na tym ze gdy w kolejnym skrypcie chce wyswietlic tablice $_SESSION to wogole tych zmienych nie ma, tak jakby nie bylo wogole sesji.
Na poczatku pliku mam oczywiscie session_start() no i nigdzie w aplikacji nie ma session_destroy() ani session_unset() a zmiennych i tak niema.
Jakim cudem jesli na poczatku dzieki nim lacze sie z serwerem to pozniej nagle znikaja ?
W kolejnym pliku zaraz robie cos takiego :
  1. print_r($_SESSION)


I wyswietla mi pusta tablice, wie ktos gdzie moze byc blad ?
zordon
moze masz gdzies przekierowanie? tzn odpalana jest jakas strona gdzie nie ma session_start() a pozniej jakis warunek nie spelniony i wracasz do skryptu gdzie juz ta funkcja jest

poszukaj czy gdzies nie uzywasz funkcji header() lub w nagłówkach html nie masz
<META HTTP-EQUIV=Refresh CONTENT="0; URL=adres strony">
Wolfie
Wszystkie przekierowania przechodza przez plik index.php gdzie na poczatku jest session_start() wiec nie ma opcji ze w ktoryms pliku nie ma session_start().
Nigdzie tez nie uzywam header()

Co do META to mam tylko jeden header.html ktory jest załączany do wszystkich plikow i nie ma w nim nic takiego jak 'HTTP-EQUIV=Refresh CONTENT="0; URL...' a jedynie :
  1. <meta http-equiv="content-type" content="text/html; charset=utf-8" />


Mam za to w deklaracji funkcji cos takiego :
  1. public function dispatch($_POST = null,$_SESSION = null) {


ale to chyba nie anuluje waznosci sesji....
zordon
jesli masz w bootstrapie session_start() to jedyne co przychodzi mi do głowy to jakis blad w tym pliku - wywalenie przez php bledu wygeneruje naglowek i jesli zostanie on wyslany przed wywolaniem session_start() stracisz sesję. poprobuj umieszczania funkcji die() w roznych, poczatkowych miejscach projektu w polaczeniu z pelnym wyswietlaniem bledow php, albo skorzystaj z jakiegos debuggera

co do funkcji dispatch to wydaje mi się, że moze ci ona skasowac sesję - upewnij się, że wszystkie funkcjie, ktore uzywaja zmiennych sesyjnych wywolywane sa z tym parametrem - jesli go nie podasz nie dostaniesz bledu, bo funkcja bedzie miala wlasciwa ilosc parametrow. moze skasuj domyslne wartosci tej funkcji(null) i zobacz czy nie wywala ci zadnych bledow(znow funkcja die() - zeby ci nie przekierowalo strony zanim zobaczysz blad)
Wolfie
Tak, to przez argument funkcji dispach($_SESSION = null) kasowalo sesje, ale przeciez to jest tylko domyslna wartosc, wiec nie powinno kasowac sesji, z drugiej strony chyba taki argument nie jest wogole potrzebny bo przeciez $_SESSION to tablica globalna i nie trzeba przekazywac jej jako argument funkcji ?
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.