[PHP](Denk?-)Probleme bei Weiterleitung mittels "header"

  • Servus!


    Könntet ihr mich bitte aus ner Denkblockade befreien und mir sagen, warum die Weiterleitung per header() hier nicht funktioniert? Die URL bleibt die des aktuellen login-Scriptes, die Seite bleibt leer - das exit scheint also zu ziehen.

    Als Pfad hab veschiedene Varianten ausprobiert: relativ, absolut (inc http), mit und ohne Hochkommata - kein Erfolg. Wenn ich die header-Zeile auskommentiere und nur ein "print 'OK'" einfüge, wird auch OK ausgegeben - ein Syntaxfehler dürfte also auch ausgeschlossen sein.

    Gruß, der Michl



    * * * if you want them to RTFM, make a better FM! * * *

  • Hi Michl,


    eigentlich sollte sowas schon funktionieren:

    PHP
    1. header( "Location: " .$Pfad_zur_neuen_Seite );


    Die Location erwartet übrigens einen komplette Adresse mit Dateiname.


    Hast Du mal die Umleitung mit echo() ausgegeben um zu sehen ob auch das drin steht, was drin stehen soll? ;)

  • Ich hab's auch mit ner "festverdrahteten" Adresse probiert: header('Location: http://pfad/zur/Seite' ) - geht auch nicht. ( Die einfachen Hochkommata oben waren quasi eine Verzweiflungstat - wenn sonst nix hilft... caipi )


    Und der Pfad existiert definitiv - ich hab ihn aus der Adresszeile des Browsers kopiert.


    Ich bin irgendwie verwirrt... :confused:

    Gruß, der Michl



    * * * if you want them to RTFM, make a better FM! * * *

  • ... header('Location: http://pfad/zur/Seite' ) - geht auch nicht.


    Nur um das nochmal klar zu machen:
    Das Ziel muß eine Datei sein, nicht nur ein Pfad.

    PHP
    1. // falsch
    2. header( 'location: http://www.domain.tld/irgendwas/' );
    3. // richtig
    4. header( 'location: http://www.domain.tld/irgendwas/index.html' );


    [edit]Noch eine Idee:
    Ist vielleicht das Error Reporting ausgeschaltet und es fand vorher schon eine Ausgabe im Browser statt?[/edit]

  • Wenn "nichts" kommt, kann es genauso gut sein, dass du irgendwo zuvor ob_start benutzt ... in dem Fall kann es passieren, dass das Skript eigentlich einen Fehler ausspuckt, man aber diesen nicht zu sehen bekommt.


    Nutzt du kein ob_start(), dann liegt das Problem woanders :D


    Zitat

    Das Ziel muß eine Datei sein, nicht nur ein Pfad.

    Falsch, es muss keine Datei sein, sondern nur eine gültige, existierende URL. ;)

    My software never has bugs. It just develops random features ... :D
    [FONT="System"]
    » DevShack - die Website des freien Webentwicklers Boris ;)

  • @Rizzo: ist bei mir der Fall. :) Und die Datei existiert auch - direkt per Browser aufrufen kann ich sie ja. Und diesen gesamten Pfad hab ich al Location angegeben.


    Kann es sein, daß mir irgendwelche php.ini - Einstellungen da nen Strich durch die Rechnung machen?

    Gruß, der Michl



    * * * if you want them to RTFM, make a better FM! * * *

  • Boris : ne, ob_start() nutz ich nicht. Und wenn ich die header-Zeile durch ein einfaches Print ersetze, wird dieses ja auch ausgegeben.


    Irgendwo hakelts beim header()...

    Gruß, der Michl



    * * * if you want them to RTFM, make a better FM! * * *

  • Ich mache das auch in vielen Projekten so und sehe keinen Fehler in Deiner Vorgehensweise. Schau doch mal ins error_log des Apachen. Dort bekommst Du handfeste Anhaltspunkte.


    Aber hier noch eine Variante der möglichen Fehlerquellen: ;)
    prüfst Du auf der verlinkten Seite, ob der User eingeloggt ist und wirfst ihn dann wieder auf die Login-Seite?
    Du hast nämlich die Session-ID nicht an die Weiterleitung gehangen, so dass beim Surfen mit deaktivierten Cookies die Session bei der Weiterleitung verloren geht und das aufgerufene Script den User gleich wieder zurückwirft.

  • Falsch, es muss keine Datei sein, sondern nur eine gültige, existierende URL. ;)


    Stimmt, Du hast recht. Es wird zwar empfohlen eine komplette URL inklusive Datei anzugeben, Pflicht die Datei anzugeben ist es aber nicht.


    Sorry, für die falsche Info.