Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Header - dziwne zachowanie
Forum PHP.pl > Forum > PHP
outsider
Witam

Zauwazylem dziwne zachowanie wywolania header("Locat ion: /user/0/account"); . Niby na pierwszy rzut oka wyglada dobrze, powinno przeniesc pod www.example.com/user/0/account - niestety po czesci tak jest. Dlaczego po czesci ? Przyklad:

Jestem na strone /user/0/loginForm gdzie znajduje sie formularz z action="/user/0/login". Potwierdzam formularz... Operacje przebiegaja pomyslnie... Jestem logowany i powinno przeniesc mnie na strone /user/0/account . Niestety tak sie nie dzieje, jestem przekierowany na strone /user/0/login czyli pod strone z action. To nic, moj kontroler zachowuje sie jakbym byl pod strona /user/0/account biggrin.gif (widze to po wczytanym szablonie) - czyli adres wyglada tak jak w action ale w rzeczywistosci jest inny smile.gif Jest pod adresem z przekierowania (ale zamotane...)

Dodam ze moj index.php uzywa try...catch(), po kazdym header() mam exit. Kawalek kodu
  1. $mv = $actionController->$methodName();
wywoluje te moje logowanie, czeka na zwrocona wartosc (moze przez to ? bo ja nic nie zwracam tylko uzywam header();exit;).

Inaczej wyglada sytuacja gdy wpisze pelny adres: header("Location: http://www.example.com/user/0/account") - w tym przypadku przekierowuje mnie na to strone poprawnie.

Moze cos Apache / PHP jest inaczej skonfigurowane niz mysle ?

Za pomoc z gory dziekuje !

Pozdrawiam
thek
Bo prawda jest taka, że tylko to drugie rozwiązanie czyli z podaniem http:// jest poprawne. To, że header przyjmuje także ścieżki względne jest pewnym ułatwieniem dla nas, webmasterów, ale nie jest to poprawne według specyfikacji. Działa jednak ze względu na lenistwo programistów, choć jak sam zauważyłeś, nie zawsze tak jak byśmy tego oczekiwali. Jeśli nie wierzysz poczytaj, a dowiesz się, że Location zawsze powinno być podawane jako wartość bezwzględna od http:// lecąc smile.gif
ddiceman
Inna rzecz, ze powinienes przed 'location' dodac naglowek ze statusem HTTP, vide http://pl2.php.net/manual/en/function.header.php#90050
outsider
Czyli jestem zmuszony pisac caly adres. Dzieki za odpowiedzi 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-2024 Invision Power Services, Inc.