Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]ob_start() - czy poytzebne jeśli działą bez tego?, Ogólnie proszę o opinie na temat tej funcji
Tho
post
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 26.07.2011

Ostrzeżenie: (20%)
X----


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.

  1. <?php
  2. ?>


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
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.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 9.10.2025 - 12:52