![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 3 Dołączył: 15.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
na każdej stronie powinno być:
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 |
|
|
![]()
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 |
|
|
![]()
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? -------------------- |
|
|
![]()
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 ![]() 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 ]:->
|
|
|
![]()
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 |
|
|
![]()
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 ![]() W miarę jasno napisałeś o co w niej chodzi, opis w manualu jest trochę zagmatwany. Jeszcze raz dzięki. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 01:07 |