Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]ob_start i session
Forum PHP.pl > Forum > Przedszkole
malminiart
Witam wszystkich.
Problem dotyczy pliku logowania, a w zasadzie w/w funkcji:

plik wyswietla zawartosc html z formularzem logowania
formularz po SUBMIT jest przetwarzany w wewnetrznym skrypcie
sprawdzana jest baza danych - porownywanie hasla etc.
uruchamiana jest druga strona po zweryfikowaniu danych

Teraz problem:
po zweryfikowaniu danych przypisalem je do sesji
  1. $_SESSION['imie']
itd
przejscie do nowej strony zrobilem za pomoca
  1. header('Location:nowastrona.php');

azeby bylo mozliwe wyslanie naglowka musialem wpisac
na poczatku strony (zaraz za znacznikiem <?php)

I caly moj problem rozumuje jako:
przez to ze dodalem ob_start - sesje ktore sa pozniej zapisywane wewnatrz skryptu nie dzialaja bo wlaczone jest buforowanie wyjscia.
a jak wylacze buforowanie to nie dziala header gdyz juz cos jest wyslane do przegladarki (czyt. strona)

Nie mam pojecia jak to obejsc - moze nie do konca rozumiem zasady ich dzialania
juz sam nie wiem - bylbym naprawde wdzieczny za pomoc

pozdrawiam
Kszyhuu
Cytat(malminiart @ 26.03.2010, 18:32:14 ) *
I caly moj problem rozumuje jako:
przez to ze dodalem ob_start - sesje ktore sa pozniej zapisywane wewnatrz skryptu nie dzialaja bo wlaczone jest buforowanie wyjscia.
a jak wylacze buforowanie to nie dziala header gdyz juz cos jest wyslane do przegladarki (czyt. strona)

A dodałeś przed ob-start();

questionmark.gif
malminiart
Tak - dodalem
moj plik logowanie.php rozpoczyna sie kodem
  1. <?php


pozniej jest html z formularzem i skrypt php ktory jest uruchamiany po submit
ten skrypt powinien sprawdzic dane z baza danych >> zapisac zmienne do session i przejsc do nowej strony

dodalem ob_start() zeby moc przejsc za pomoca header do nowej strony - tyle ze na tej stronie nie wyrzuca mi session - tak jak by ich nie zapisalo wczesniej do $_SESSION
mysle ze to przez ta funkcje ob_start() na poczatku skryptu - tyle ze jak wywale ta funkcje to nie moge uzyc header

i kolo sie zatacza
Fifi209
Włącz sobie wyświetlanie błędów zobaczysz dlaczego, albo poczytaj o ob_start...

  1. <?php
  2.  
  3. // wcześniej żadnego nagłówka, żadnego kodu html, kodowanie utf-8 bez BOM
  4.  
  5.  
  6. // skrypt
  7.  
  8. header('Location: xxx.php');
  9.  
  10.  
  11. ?>
malminiart
czytalem... kwestia czy zrozumialem wstydnis.gif

czy to nie jest tak ze jedno wyklucza drugie?

czy gdy uzyje ob_start() >> przechodzi w tryb buforowania wyjscia i wowczas uzywanie session mija sie z celem gdyz i tak nic nie jest zapisywane w session?

sorry za nudzenie - ale nie moge tego sobie w glowie poukladac

Dzieki za odpowiedzi
Fifi209
Cytat(malminiart @ 26.03.2010, 21:24:13 ) *
czytalem... kwestia czy zrozumialem wstydnis.gif

czy to nie jest tak ze jedno wyklucza drugie?

czy gdy uzyje ob_start() >> przechodzi w tryb buforowania wyjscia i wowczas uzywanie session mija sie z celem gdyz i tak nic nie jest zapisywane w session?

sorry za nudzenie - ale nie moge tego sobie w glowie poukladac

Dzieki za odpowiedzi


On buforuje, ale nagłówki wyśle najpierw potem resztę (np. kod html) wszystko będzie działało poprawnie - jednak to nie jest dobra metoda moim zdaniem. (jeżeli musisz coś takiego robić to coś najprawdopodobniej źle zaprojektowałeś)
Kszyhuu
Cytat(malminiart @ 26.03.2010, 21:24:13 ) *
czy to nie jest tak ze jedno wyklucza drugie?

czy gdy uzyje ob_start() >> przechodzi w tryb buforowania wyjscia i wowczas uzywanie session mija sie z celem gdyz i tak nic nie jest zapisywane w session?

Nie, nie jest tak, że jedno wyklucza drugie. Ja w moich systemach logowania zawsze korzystałem z obu funkcji. Popatrz nawet na dwa szkielety, które wrzuciłem tutaj na forum:
http://forum.php.pl/index.php?s=&showt...st&p=653850
A w szczególności:
http://forum.php.pl/index.php?s=&showt...st&p=688407
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.