Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [wydajność] przekierowania header('location');
Forum PHP.pl > Forum > PHP
Black-Berry
W swoich aplikacjach często używam przekierowań za pomocą funkcji header(); Zazwyczaj poprostu po poprawnej walidacji formularza przekierowuję przeglądarkę na odpowiedni adres z potwierdzeniem. Zastanawiam się jednak czy to aby na pewno dobre rozwiązanie. Przeglądarka musi bowiem 2 razy nawiązać połączenie a co za tym idzie plik Bootstrap.php aktywuje się dwukrotnie.

Chciałbym wiedzieć czy wy także w swoich aplikacjach stosujecie funkcji header() czy może unikacie jej za wszelką cenę? Jak myślicie jak wielkie to może mieć znaczenie dla całej aplikacji?
Fifi209
Myślę, że dużo osób robi tak jak Ty.

Firefox + live http headers i zobacz np. gry online takie jak plemiona, samo logowanie to "skakanie" po stronach.

Ew. możesz użyć ajaxa.
gothye
przy walidacji formularza jeśli jest nie poprawnie wypełniony ,pola przyjmują wartość $_POST odpowiadającą stanowi kontrolce przed jego wysłaniem ,w przypadku poprawnego wypełnienia formularza używam header aby wyczyścić tablice $_POST i nie wysyłać go podwójnie 
usb2.0
no wlasnie tez mam z tym problem czesto, jak inaczej mozna sobie jeszcze z tym radzic?
mam na mysli np logowanie i przekierowanie.
megawebmaster
Inny sposób to jedynie zapytanie o poprawne wypełnienie przez AJAX (brak przeładowania całej strony, a jedynie wymaganych elementów, zmniejszenie ilości przesyłanych danych), ale to i tak dalej jest kolejne zapytanie do serwera. Nie sądzę, żeby istniała możliwość innego działania korzystając z protokołu HTTP.
Pilsener
Cytat
Zazwyczaj poprostu po poprawnej walidacji formularza przekierowuję przeglądarkę na odpowiedni adres z potwierdzeniem. Zastanawiam się jednak czy to aby na pewno dobre rozwiązanie
- nie ma sensu nawet się zastanawiać, takie rozwiązanie jest złe. Przekierowania kłócą się z wydajnością i zawsze tak będzie - wszystkie dane wejściowe (POST, GET) powinny trafiać do jednego pliku index.php, a dopiero na ich podstawie includujemy potrzebne fragmenty kodu (lub korzystamy z określonych klas/metod etc. w obiektowym).

Oczywiście przekierowania mogą być przydatne i potrzebne (jeśli po wykonaniu jakiejś czynności wskazany jest powrót np. do strony głównej), ale mówimy tu o sytuacjach, gdy możemy się bez nich obejść.

Edit: w każdym bądź razie moja rada jest taka, żeby nie nadużywać przekierowań, nie używać ich jeśli nie są potrzebne.
Black-Berry
Największy problem to czyszczenie posta. Jeśli nie przekierujemy przeglądarki funkcją header() po poprawnej walidacji formularza to odświeżenie przeglądarki spowoduje ponowne wysłąnie POST'a do serwera. Jest to jeszcze bardziej kłopotliwe. Wydaje mi się więc że z tego powodu nie da się uniknąć przkierowania. Wielka szkoda.

Jeśli chodzi o AJAX'a to każde wykonanie czegoś przez serwer i tak spowoduje ładowanie Bootstrap'a.
Fifi209
Cytat(Black-Berry @ 30.01.2010, 23:32:32 ) *
Jeśli chodzi o AJAX'a to każde wykonanie czegoś przez serwer i tak spowoduje ładowanie Bootstrap'a.


Do muchy strzelasz z armaty? smile.gif

Ja dla ajaxa mam specjalny katalog "actions" i każda akcja to inny plik, robi co musi i zwraca dane najczęściej w JSON.
Black-Berry
Cytat(fifi209 @ 30.01.2010, 23:40:37 ) *
Do muchy strzelasz z armaty? smile.gif

Ja dla ajaxa mam specjalny katalog "actions" i każda akcja to inny plik, robi co musi i zwraca dane najczęściej w JSON.

Jest to jakieś rozwiązanie... ale co robisz jak formularz zostanie zwalidowany poprawnie? przekierowujesz za pomocą JS ? Mogłbys mi pokazać jakiś link do formularza który robiłes? Byłbym wdzięczny.
Fifi209
Cytat(Black-Berry @ 30.01.2010, 23:44:07 ) *
Jest to jakieś rozwiązanie... ale co robisz jak formularz zostanie zwalidowany poprawnie? przekierowujesz za pomocą JS ? Mogłbys mi pokazać jakiś link do formularza który robiłes? Byłbym wdzięczny.

Wiesz, podzieliłem stronę tak, abym mógł dynamicznie zmieniać treść, tym samym z odpowiedzi wiem co i do jakiego diva wrzucić. winksmiley.jpg

A teraz niestety nie mam nic takiego - po formacie ;/
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.