Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie - Przekierowanie
Forum PHP.pl > Forum > PHP
Reptile ReX
Tak się zawsze zastanawiałem, jak sobie radzicie z przekierowaniami w PHP np po logowaniu.
Jak wiadomo istnieje funkcja header, no ale jeżeli przed tą funkcją został już wysłany jakiś tekst etc. to wypluje błąd w stylu already sent
Przez to nie zawsze da się użyć header, ale wtedy z pomocą idzie funkcja ob_start(); która to bufferuje odpowiednio, ale czy to rozwiązanie jest bezpieczne i prawidłowe ?

Spotkałem się także z echo i odpowiednim meta tagiem, ale to z kolei nie jest wg standardów W3C ponieważ meta tagi powinny być w sekcji head.

Jak wy sobie z tym radzicie, jak to robić, aby to działało i było poprawne.
wookieb
Wszystkie ale to wszystkie operacje "logiczne" strony wykonuje jest przed jakimkolwiek wyświetleniem danych. Dopiero po ich wykonaniu zwracasz do przeglądarki cokolwiek. Dzięki temu zawsze jesteś w stanie zrobić przekierowania.
Ilware
Ja wstawiam w ciąg php

  1. <meta http-equiv="refresh" content="x; url=adres" \>


zawsze działa nie trzeba używać ob_start()
lukaskolista
Cytat
Jak wiadomo istnieje funkcja header, no ale jeżeli przed tą funkcją został już wysłany jakiś tekst etc. to wypluje błąd w stylu already sent
Przez to nie zawsze da się użyć header
Wiec zle zaprojektowales aplikacje, jak wookieb napisal zwracanie odpowiedzi powinno sie odbywac po wykonaniu wszystkich operacji, bo jak przypuszczam Twoj kod to sieczka echo naprzemian z mysql_query i petlami. Wspolczesne frameworki bardzo dobrze pokazuja, jak mozna rozdzielic poszczegolne czesci aplikacji. Mozesz tez poczytac o wzorcu MVC, ktory wedlug mnie nie jest najlepszym wzorcem do pisania w php, ale pokazuje sedno sprawy.
cudny
OOP, MVC. Już się nie programuje w strukturach, te czasy odeszły i nastały: symfony, zend i cake lub napisanie jakiegoś swojego frameworka przy użyciu obiektów.
thek
cudny... Odeszły jedynie dla nowych programistów. Ale i tak z czasem będziesz musiał pracować z serwisami strukturalnymi (choćby po to by takowy na obiektowy klientowi przepisać). Nie mówiąc o tym, że im mniej obiektówki, tym kod szybszy i czasem jest to powodem, by kod napisać jako porządny strukturalny. Odrzucanie kodu strukturalnego tylko dlatego, że "nie jest trendy" jest równie mądre co eutanazja "bo ktoś jest już stary". Zastanów się przy okazji czemu sterowniki i jądra systemów nie są pisane w językach nowoczesnych, ale Assemblerze czy C.

A co do tematu, to radzę autorowi poważnie przemyśleć strukturę strony i kod. Jak wspomniał wookieb, logika cała powinna się wykonać przed wysłaniem choćby bita informacji do przeglądarki. Jeśli już jest się zmuszonym, to powinno to być buforowane i dopiero po wykonaniu całej logiki wysłane. Unika sie wtedy właśnie błędów o jakich wspomina autor tematu. Poza tym przeplatany kod "czyta się" strasznie.
wookieb
Cytat(thek @ 17.03.2011, 10:05:45 ) *
Odrzucanie kodu strukturalnego tylko dlatego, że "nie jest trendy" jest równie mądre co eutanazja "bo ktoś jest już stary". Zastanów się przy okazji czemu sterowniki i jądra systemów nie są pisane w językach nowoczesnych, ale Assemblerze czy C.

Powiedz, że żartujesz...
cudny
Cytat(thek @ 17.03.2011, 10:05:45 ) *
Nie mówiąc o tym, że im mniej obiektówki, tym kod szybszy

Nigdy w życiu się z tym nie zgodzę, jeśli chodzi o zaczytywanie klas kiedy są one porządnie zrobione to jeśli trzepniesz sobie jakiegoś dobrego autoloadera albo używasz jakiegoś frameworka to masz tylko ten kod co cię interesuje, a nie setki linijek niepotrzebnych struktur.
Cytat(thek @ 17.03.2011, 10:05:45 ) *
Zastanów się przy okazji czemu sterowniki i jądra systemów nie są pisane w językach nowoczesnych, ale Assemblerze czy C.

Bo są bliższe procesorowi, co sprawia że działają szybciej - to nic nie ma wspólnego ze strukturami !
Reptile ReX
Nie przekonuje mnie za bardzo obiektowość, wolę oldschoolowe programowanie strukturalne i też uważam, że jest szybsze niż obiektowe.
Ale nei chcę wywoływać burzy, więc mówię od razu, wiem że obiektowość jest wygodniejsza, ale nie mogę się przestawić póki co.

Ale dziękuje za rady, dzięki temu wiem już jak planować swoje aplikacje i każdą logikę umieszczam przed wyświetlaniem treści.

Pozdrawiam Serdecznie takich maniaków PHP jak ja smile.gif
thek
@Wookieb - nie. Żeby obiektówka działała porównywalnie szybko jak dobrze napisany strukturalny kod to trzeba cudować z różnego rodzaju cachem, akceleratorami i używać jej w sposób wskazujący na naprawdę dobre zrozumienie idei oraz technik. Im więcej obiektówki tym kod wolniejszy. Większe projektyuwidaczniają to najlepiej. Nie jestem zwolennikiem i orędownikiem pisania kodu strukturalnego, ale też nie jestem zaślepiony kodem obiektowym. Czasem wolę w miejscach newralgicznych zrobić prosty strukturalny niż tworzyć na siłę obiektowy. Wszystko zależy od konkretnej sytuacji, kodu wcześniejszego i masy innych czynników.

A co do sterowników, to ile języków wysokiego poziomu pozwala na swobodne adresowanie pamięci poprzez choćby wstawki assemblerowe?

A co do wątku, to zalecałbym autorowi poczytać o MVP, to by takich problemów zapewne uniknął smile.gif
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.