![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Funkcję ob_start() można wykorzystać na 2 sposoby:
1. do buforowania pobranych stron 2. (najczęściej) do ominięcia komunikatu "(...)headers already sent by (...)" Ostatnio spotkałem się z opinią, że wykorzystywanie ob_start() do drugiego przypadku jest jak stosowanie globali.. Dlatego też chciałbym poznać Wasze zdanie na ten temat. Czy uważacie, że to "błąd programistyczny"? Przecież nie raz chcemy przekierować stronę za pomocą header('Location: ' . 'http://somehost/somesite/'); ale to zależy od pewnych warunków i nie da się wcześniej uniknąć nie wysyłnia danych do przęglądakri.. (?) -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Ostatnio spotkałem się z opinią, że wykorzystywanie ob_start() do drugiego przypadku jest jak stosowanie globali.. Dlatego też chciałbym poznać Wasze zdanie na ten temat. Czy uważacie, że to "błąd programistyczny"? Dla mnie sprawa jest prosta, to jest oczywisty błąd.Decyzja o tym co ma zostać wysłane użytkownikowi powinna zapaść zanim zaczniemy coś wysyłać. Bo po co mamy mu wysyłać jakieś śmieci skoro nie jesteśmy czegoś pewni? Przecież nie raz chcemy przekierować stronę za pomocą header('Location: ' . 'http://somehost/somesite/'); To tutaj moje pytanie: Co ma piernik do wiatraka? Sprawdzanie warunków, z tego co wiem, nie powoduje wysłania danych do przeglądarki.ale to zależy od pewnych warunków i nie da się wcześniej uniknąć nie wysyłnia danych do przęglądakri.. (?) Wiec jest to żaden argument. Najpierw sprawdzamy i decydujemy się na to co wysłać a potem wysyłamy. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
To tutaj moje pytanie: Co ma piernik do wiatraka? Sprawdzanie warunków, z tego co wiem, nie powoduje wysłania danych do przeglądarki. Wiec jest to żaden argument. Najpierw sprawdzamy i decydujemy się na to co wysłać a potem wysyłamy. Ok. A co w przypadku, gdy główny skrypt generuje nagłówek, menu strony a w głównej części dynamiczną zawartość. I jeśli wystąpi pewien warunek to coś wyświetlamy a jeśli inny to zapisujemy coś do bazy i przekierowujemy na inną podstronę? -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
To nadal jest błąd.
Najpierw programista powinien się zdecydować co chce wygenerować/pokazać a potem to pokazać. Widok powinien być oddzielony od logiki strony. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) ![]() ![]() |
A co w przypadku, gdy główny skrypt generuje nagłówek, menu strony a w głównej części dynamiczną zawartość. To wtedy skrypt jest źle napisany i nie zbyt dobrze przemyślany. -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Widok powinien być oddzielony od logiki strony. Ok jak stosujesz MVC. Ale jak piszesz skrypt mieszając wszystko.. Kiedyś nikt nie słyszał o MVC. Najpierw programista powinien się zdecydować co chce wygenerować/pokazać a potem to pokazać. Ale w klasycznym stylu, gdzie plik index.php zawiera nagłówek, menu i stopkę a środek strony generowany jest przez instrukcje switch (czyli includowane są odpowiednie pliku na podstawie np wartości $_GET NIE DA SIĘ zaplanować nagłówka. Trzeba by generować całą strone, albo ładować wszystko do jednej zmiennej a później wyświetlać.. Pozwoliłem sobie dopisać. Poniżej link do posta, w którym kolega próbuje przekierować użytkownika na inna stronę po wysłaniu maila. Temat: php wysylanie formularza na dwa adresy email Ciężko coś takiego osiągnąć bez ob_start(). Chyba, że w głównym pliku w sekcji head zamieścimy warunki, które będą sprawdzały określony parametr $_GET i na podstawie tego ustawiały odpowiednie meta. Przy dużych aplikacjach łatwo o pomyłkę i mało elastyczne.. -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#7
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
~Jarod masz z tym problem bo cały czas trzymasz się argumentacji, którą deje Ci błędne założenie z jakimś lipnym plikiem nagłówka.
Masz jakiś head.php, w nim jakiś nagłówek, jakiś html. I bezmyślnie zawsze go dołączasz. Nic więc dziwnego, że potem są problemy z nagłówkami bo coś już zostało wysłane. A rozwiązaniem jest banalne i nie rozumiem dlaczego je odrzucasz. Najpierw decydujesz jakie nagłówki wysłać a potem to robisz. Podany przez Ciebie przykład jest wręcz oczywisty. Formularz został wysłany? Nie: 1. Pokazujesz formularz Tak: 1. Odbierasz dane z niego i wysyłasz maila. 2. Pokazujesz formularz i komunikat, że maile wysłano. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Masz jakiś head.php, w nim jakiś nagłówek, jakiś html. I bezmyślnie zawsze go dołączasz. Nic więc dziwnego, że potem są problemy z nagłówkami bo coś już zostało wysłane. A rozwiązaniem jest banalne i nie rozumiem dlaczego je odrzucasz. Najpierw decydujesz jakie nagłówki wysłać a potem to robisz. Słyszałem, że nagłówki powinno się wysyłać tylko w sekcji head poprzez meta. Nie powinno się stosować header(). A skoro tak to jak zdecydować w pliku footer.php, który nagłówek wysłać skoro jeszcze tego nie wiem? ;/ -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.07.2025 - 17:33 |