Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][problem] sesje
wiiir
post
Post #1





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

Ostrzeżenie: (0%)
-----


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 :/

Ten post edytował wiiir 25.04.2010, 16:29:52
Go to the top of the page
+Quote Post
sebastiankozub
post
Post #2





Grupa: Zarejestrowani
Postów: 43
Pomógł: 1
Dołączył: 17.02.2008
Skąd: Leszno

Ostrzeżenie: (0%)
-----


session_start() zawsze na poczatku pliku

wiecej ci nie powiem do ciezko z twojego kodu i opisu wywnioskowac co chcesz osiagnac smile.gif


--------------------
>> strony internetowe - Leszno <<

>> skup samochodów osobowych <<

>> programy żużlowe <<
Go to the top of the page
+Quote Post
quality
post
Post #3





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 13.02.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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

Ten post edytował quality 26.04.2010, 07:58:02


--------------------
Go to the top of the page
+Quote Post
sniver
post
Post #4





Grupa: Zarejestrowani
Postów: 159
Pomógł: 5
Dołączył: 31.08.2007

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
wiiir
post
Post #5





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
gigzorr
post
Post #6





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

Ostrzeżenie: (0%)
-----


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(); ?>
Go to the top of the page
+Quote Post
tehaha
post
Post #7





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
wiiir
post
Post #8





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 23:31