![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 26.07.2011 Ostrzeżenie: (20%) ![]() ![]() |
Tworzę już chyba z tydzień, system rejestracji z całym oprzyrządowaniem, przypomnienie hasła itd.. W związku z tym chciałbym poznać Twoją opinie.
Czy jest to nierozerwalnie związane z session_start? Zawsze jedno ob musi być przed nim a drugie ob za nim. Czy mają być na końcach plików, niezależnie od fragmentów <?php?>? Dowiedziałem się że przed każdym session_start(); musi być ob_start(); a na zakończenie(ale w którym dokładnie miejscu, co znaczy zakończenie?) ma być ob_end_flush(). Początek każdego pliku zazwyczaj wygląda u mnie tak.
Początek znaczy, nawet przed "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">" Później mam kilka sektorów <?php?> i wszystko zdaje się działać niezależnie od tego czy w pliku jest gdziekolwiek ob_end_flush(); . Czy może tego nie widać, nie wywala błędów, ale trzeba to wstawić bo brak tego czymś grozi? Proszę mnie ignorancko nie odsyłać do manuala, bo gdybym tam nie sprawdzał, nie pisał bym takiego długiego postu. Tam jest bardziej definicja, a mi chodzi o OPINIE i rady. Czy i dlaczego nie wystarczy samo session_start(); ? Ten post edytował Tho 30.10.2011, 20:02:36 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
ob_start() służy do włączenia buforowania wyjścia. To z kolei powoduje, że wynik działania skryptu nie jest od razu wysyłany na wyjście, ale jest zapisywany w wewnętrznym buforze. Wyjątkiem są funkcje, które modyfikują nagłówki (np. header, session_start). Funkcje te działają niejako "poza" wspomnianym buforem.
Cytat 2. Sprawa nie jest taka prosta, bo jeśli to prawda "nie musisz używać", to dlaczego wstawienie ob_start() spowodowało zniknięcie tego błędu, nie wstawiałem ob_end_flush(), samo ob_start na samym początku pliku, przed session_start, to wystarczyło by zniknął komunikat błędu. Owszem, to wystarczyło, aby zniknął komunikat błędu, ale sam problem nie został rozwiązany i błąd nadal gdzieś tkwi. W dodatku teraz trudniej będzie go znaleźć. ob_end_flush() powoduje wysłanie zawartości wewnętrznego bufora na wyjście i wyłączenie buforowania wyjścia. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 12:52 |