Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] sesje - pytanie
adam83
post
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 2.11.2009

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


Witam,

Mam takie pytanie odnośnie sesji.
W momencie logowania powstaje zmienna sesji np $zalogowany. Na każdej chronionej podstronie pierwsze linie kodu to sprawdzenie czy taka zmienna istnieje, jeśli nie to przekierowanie do strony logowania.
Czy aby zmienna sesji "przeżyła" wymagane jest aby na każdej odwiedzanej po zalogowaniu podstronie na początku był
?
Zrobiłem tak i ostatnio napotkałem dziwne błędy i warningi, pomogło dodanie
.


Widziałem gdzieś że obie komendy są czesto stosowane obok siebie w skryptach logowania, jak to działa? moze mi ktoś wytłumaczyć?
z góry wielkie dzieki.
Pzdr.

Ten post edytował adam83 16.01.2010, 11:06:34
Go to the top of the page
+Quote Post
Maciek1705
post
Post #2





Grupa: Zarejestrowani
Postów: 157
Pomógł: 3
Dołączył: 15.06.2009

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


na każdej stronie powinno być:
  1. session_name("nazwa_sesji");


samo session_start to nie wszystko bo na stronie będzie Ci startował sesję ale każdą inną żeby tego nie było daj się nazwe sesji do rozpoznawania sesji na stronie.

Ten post edytował Maciek1705 16.01.2010, 11:43:00
Go to the top of the page
+Quote Post
adam83
post
Post #3





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 2.11.2009

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


dzięki, ale jak to zrobić jeśli mówimy o sesji w kontekście logowania?

Po uwierzytelnieniu tworzy się sesja o jakimś ID, prawda? Jak mam je wyłapać i zadbać o to aby ta sesja trwała dalej na kolejnych podstronach, a nie rozpoczynała się nowa sesja??

gdyby jeszcze ktoś był miły i wytłumaczył, na czym polega praktyczne działanie ob_start() bo z manuala nie wiele rozumiem..

Ten post edytował adam83 16.01.2010, 13:19:14
Go to the top of the page
+Quote Post
Helid
post
Post #4





Grupa: Zarejestrowani
Postów: 280
Pomógł: 20
Dołączył: 12.12.2007
Skąd: 127.0.0.1

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


Po pierwsze to utwórz plik jaki będzie otwierany na każdej podstronie i w nim zawarty kod. którego zadaniem jest sprawdzanie sesji.
ob_start
Cytat
Przełącza w pozycję ON status wyjściowego buferu PHP. Podczas gdy wyjście jest aktywne wyjścia buforowania nie są wysyłane ze skryptu, a wynik jest przechowywany w wewnętrznym buforze.

Osobiście nie mam pojęcie nt. zastosowania tej funkcji, bynajmniej moje sesje działają bez tego.
Jakiej wersji php używasz?


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





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 4.06.2009

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


Nie musisz pamiętać i rozpoznawać ID, sesja robi to sama i właśnie do tego służy (m.in. do tworzenia i opiekowania się ciastkiem sesyjnym w przeglądarce).
Jednak sesja to mechanizm stosunkowo prosty, warto go troche rozszerzyć. Najlepiej napisz własną funkcję, która rozpocznie sesję, zadba o jej nazwę, a dodatkowo (dla bezpieczeństwa) sprawdzi, czy user nie używa tego samego ID spod innego IP lub innej przeglądarki (bo to by oznaczało kradzież sesji, czyli podszycie się - tego nie chcemy winksmiley.jpg ). Dokładniejsze objaśnienie z przykładami: http://pl.wikibooks.org/wiki/PHP/Sesje#Bez...C5.84stwo_sesji

Aha, oczywiście tą funkcję sesyjną umieść w pliku, o którym mówi Helid - będziesz go sobie includował na każdej podstronie.

Ten post edytował Hellelujah 16.01.2010, 16:45:13


--------------------
Hellelujah - not a holy man ]:->
Go to the top of the page
+Quote Post
230005
post
Post #6





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


Co do ob_start - najlepiej będzie chyba wytłumaczyć na przykładzie:

jeśli przed session_start() będzie jakieś echo, albo skrypt spowoduje że php zwróci błąd (nie fatal error - bo wtedy nie zadziała wcale, raczej jakiś warning) to dostaniesz wiadomość, że "headers alrent sent... cośtam". Funkcja ob_start buforuje wszystko co może zostać wysłane do przeglądarki, a więc w tym wypadku najpierw nagłówki session_start, a dopiero później to co wypluje skrypt.

W każdym razie to, że bez ob_start() skrypt rzucał błędami i ostrzeżeniami oznacza, że session_start umieściłeś za linią wysyłającą wynik, lub powodującą błąd, a powinieneś na samym początku.

Ten post edytował 230005 16.01.2010, 16:52:44
Go to the top of the page
+Quote Post
adam83
post
Post #7





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 2.11.2009

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


Dziękuje Wam za pomoc.
Odnośnie ob_start() to właśnie dlatego ją stosowałem, bo wyrzucało mi ten błąd z już wysłanym nagłówkiem smile.gif
W miarę jasno napisałeś o co w niej chodzi, opis w manualu jest trochę zagmatwany.

Jeszcze raz dzięki.
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: 22.08.2025 - 01:07