PHP header() funktioniert nicht, wenn URL per Variable übergeben wird...

Jack159

Lieutenant
Registriert
Dez. 2011
Beiträge
766
Hallo,

Ich habe in meinem PHP-Projekt eine Methode getURL(), welche mir meine grundlegende URL zurückgibt, also in meinem Fall wäre dies derzeit "http://localhost/Projektname".

Jetzt möchte ich diese Funktion innerhalb der header()-Funktion wie folgt nutzten:

PHP:
header("Location: " . getURL() . "/ControllerX/MethodeY");

Das funktioniert nicht, da mich dieser header dann zur folgenden URL weiterleitet:
http://localhost/ControllerX/MethodeY

(Es fehlt der Projektname, daher gibts einen 404 Error, gewünscht ist ja
http://localhost/Projektname/ControllerX/MethodeY)


Jetzt wird es aber noch merkwürdiger:
Übergebe ich der header()-Funktion die URL im Klartext, also wie folgt:

PHP:
header("Location: http://localhost/Projektname/ControllerX/MethodeY");

funktioniert die Weiterleitung absolut problemlos :freak:

Die Methide getURL() gibt definitiv "http://localhost/Projektname" zurück, das habe ich bereits überprüft.

Wieso funktioniert das bei der 1. Variante nicht?
 
Meines Wissens kann/darf vor der header()-Funktion keine andere Funktion/Methode aufgerufen werden. Und wenn du in der header()-Fkt eine Funktion hast, dann wird die ja vorher bearbeitet. Wie genau das war, weiß ich aber nicht mehr, sry.

Vielleicht hilft dir da php.net weiter, da steht bestimmt irgendwas dabei:
http://php.net/manual/en/function.header.php
 
Vor dem Aufruf einer Funktion werden die Parameter aufgelöst, d.h. die Konkatenation von Text und getURL(). Das trifft bei jeder Funktion zu und ist Element der Sprache. Insofern ist der Kommentar von lordofthedawn Unsinn. Wie sein Link belegt hat er auch keinerlei Nachweis für seine komische Idee gefunden.

Es gibt keine getURL() Funktion in PHP, die ist also lokal bei dir vorhanden. Wie genau die ausschaut mußt du uns schon sagen. Bei Verwendung von header ist generell lediglich zu beachten, daß man vorher nicht bereits irgendwas gesendet hat. Bislang klingt das jedoch nach einem Fehler in deiner Funktion.
 
Danke für die Korrektur @DJND!

Hab ich heute wenigstens auch noch etwas dazu gelernt. Ich hab nicht versucht meine "Idee" zu belegen, mir hat php.net meist geholfen, auch wenn ich das mit dem header() wohl falsch im Hirn abgespeichert habe. Daher der Link.
 
Zuletzt bearbeitet: (Korrektur)
Zurück
Oben