Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][problem] sesje
Forum PHP.pl > Forum > PHP
wiiir
Mam problem odnosnie sesji... projekt wyglada mniej wiecej tak:
mam index.php do ktorego na wzaleznosci co mam w get includuje pliki w instrukcji switch, w switchu jest tez includowany plik do rejestracji w ktorym nie powinno byc session_start
wszystkie sesje trzymam w bazie danych z wlasnym handlerem

Plik index.php wygalda mnie wiecej tak

wersja dzialajaca
  1. require_once
  2. require_once
  3. require_once
  4. require_once
  5.  
  6. switch()
  7. {
  8.  
  9. }
  10. # i tutaj wywoluje clase logowania jest jest ok zakladam sesje
  11. if(cos_tam){
  12. $_SESSION['is_login']=true itd...
  13. }else{
  14. #jakis komunikat o blednym logowaniu
  15. }
  16.  
  17. #reszta czesc kodu


No i teraz jesli session_start() wrzuce na sam poczatek to robi mi rekord w bazie ale bez zadnych wartosci.. jest samo session_id a przeciez dodalem do sesji 'is_login'

Dlaczego tak sie dzieje.. i czy wogole nalezt w ten sposob pisac kod bo chyba nie.. ale nie wiem jak to rozwiazac bo nie dodaje zmiennych do sesji :/
sebastiankozub
session_start() zawsze na poczatku pliku

wiecej ci nie powiem do ciezko z twojego kodu i opisu wywnioskowac co chcesz osiagnac smile.gif
quality
Hmmm z tego co widze to masz ustawionego handlera sesji zeby zapisywal sie w bazie, wiec:

Czy ktos jest zalogowany czy nie, czy zapiszesz jakies dane w sesji czy nie, dajac session_start() sesja sie tworzy tak czy siak. Gosc ktory wszedl na strone dostaje odpowiedni nr sesji, jesli nie zapiszesz zadnych zadnych w sesji, zapisze sie w bazie tylko sam nr sesji bez danych. Wiec to jest prawidlowe dzialanie.

I tak jak napisal sebastiankozub session_start() dajemy zawsze na poczatku pliku.

Jesli Ci nie zapisuje danych do sessji sprawdz tablice $_SESSION[], czy sa tam dane, ktore chciales zapisac. Byc moze handler nie dziala prawidlowo.

Adrian
sniver
Jeśli w plikach które dołączasz za pomocą require_once istnieje choćby spacja poza klamerkami <?php ?>, to sesja sie nie odpali.

Problem polega na tym że identyfikator sesji (np. $_COOKIE['PHPSESSID']) - to ciasteczko. Nie można zapisać ciasteczka jeśli wystąpił jakiś kod. Jest to spowodowane tym że PHP wysyła ciasteczko do zapisania w postaci nagłówka, a te muszą być wykonane na samym początku...
wiiir
Hmm chodzi o to ze w tym przykladzie podalem sesssion_start w klauzuli IF i wtedy sesje zaklada mi prawidowo, natomiast jesli napisze session_start tuz przed IF-em (oczywiscie pozniej wykonuje sie $_SESSION['is_login']=true itd... ) to do momentu odswiezenia strony jest tablica $_SESSION jest taka jaka podam i wszystko pieknie jest w bazie.. natomiast jesli przejde na strone glowna wartosci sie uzuwaja i jest tylko session_id w bazie...

oczywiscie w innych plikach jest session_start itd...

handler jest raczej dobrze napisany.. testowalem kilka krotnie na prostych sktyptach... dziwne dla mnie jest to wlasnie ze jak jest session w IF-ie to dziala jak przed IF-em to juz nie dziala... przeciez IF i tak sie wykona prawidlowo.... :/

zna ktos odpowiedz dlaczego tak sie dzieje?
gigzorr
Cytat(wiiir @ 29.04.2010, 10:48:32 ) *
Hmm chodzi o to ze w tym przykladzie podalem sesssion_start w klauzuli IF i wtedy sesje zaklada mi prawidowo, natomiast jesli napisze session_start tuz przed IF-em (oczywiscie pozniej wykonuje sie $_SESSION['is_login']=true itd... ) to do momentu odswiezenia strony jest tablica $_SESSION jest taka jaka podam i wszystko pieknie jest w bazie.. natomiast jesli przejde na strone glowna wartosci sie uzuwaja i jest tylko session_id w bazie...

oczywiscie w innych plikach jest session_start itd...

handler jest raczej dobrze napisany.. testowalem kilka krotnie na prostych sktyptach... dziwne dla mnie jest to wlasnie ze jak jest session w IF-ie to dziala jak przed IF-em to juz nie dziala... przeciez IF i tak sie wykona prawidlowo.... :/

zna ktos odpowiedz dlaczego tak sie dzieje?



Mialem podobny problem , hmm sesje mi sie usuwaly po przejsciu/odswiezeniu ty masz to samo? moze sproboj ob_flush ob_start użyć czyli pod sesjami logowaniem daj ob_flush();
a w index.php daj
  1. <?php session_start(); ob_start(); ?>
tehaha
wydaje mi się, że nie powinieneś z taką pewnością zakładać, że handler jest bezbłędnie napisany, teoretycznie nie powinno być różnicy czy session_start() jest przed warunkiem if czy za, więc przeanalizuj dokładniej swój handler
wiiir
Cytat(gigzorr @ 29.04.2010, 11:01:30 ) *
Mialem podobny problem , hmm sesje mi sie usuwaly po przejsciu/odswiezeniu ty masz to samo? moze sproboj ob_flush ob_start użyć czyli pod sesjami logowaniem daj ob_flush();
a w index.php daj
  1. <?php session_start(); ob_start(); ?>


ok wroce do domu to zobacze czyto zadziala

sprawdze jeszcze raz handlera.. ale wydaje mi sie ze nie w nim lezy problem...
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.