PHP-Header-Umleitung funktioniert nicht

8

Ich weiß, dass dies bereits behandelt wurde, aber ich kann keine Antwort darauf finden,

Ich habe das immer benutzt;

%Vor%

Dies hat in meinem aktuellen Projekt immer funktioniert und plötzlich funktioniert es in keinem meiner Browser

Ich möchte das Problem herausfinden und beheben, anstatt

zu verwenden %Vor%

Ich habe auch Fehlerberichte aktiviert und es zeigt keine Fehler

%Vor%

Irgendwelche Ideen, warum es nicht funktioniert?

    
JasonDavis 06.08.2009, 23:18
quelle

13 Antworten

18

Versuchen:

%Vor%

Sehen Sie, was Sie bekommen. Sie sollten verwenden ^ (xor) nicht in Ihrem error_reporting () aufrufen, weil Sie unbeabsichtigt sind für alle Fehler außer Hinweise und Warnungen zu fragen .. was, was ist ein ‚Header bereits gesendet‘ Fehler ist.

Bearbeiten:

Versuchen Sie auch bündig setzen () direkt über Ihr header () Aufruf.

    
Mike B 06.08.2009, 23:21
quelle
13

Versuchen Sie, den Platz Zwischen Ort und die erste h in http zu entfernen.

%Vor%

wird zu

%Vor%

Ich hatte dieses Problem auf meinem WAMP-Server.

Obwohl es nicht das Problem sein sollte, ist dies in der PHP-Dokumentation dokumentiert. Aber du solltest es wahrscheinlich trotzdem versuchen. Ich weiß, dass es in einer Reihe von Fällen für mich funktioniert hat.

    
Tyler Carter 06.08.2009 23:19
quelle
10

GEMEINSAME PROBLEME:

1) Vor dem Befehl echo.. sollte keine Ausgabe (dh header(.......); oder HTML-Codes) erfolgen.

2) vor <?php und after ?> tags. Leerzeichen (oder newline ) stehen / p>

3) GOLDER RULE! - Die Datei (und auch, wenn Sie include andere Dateien haben) UTF8 ohne BOM Kodierung ( und nicht nur UTF-8 ). Das ist in vielen Fällen ein Problem (weil die UTF8 codierte Datei am Anfang der Dateiausgabe einen besonderen Charakter hat) !!!!!!!!!!!

4) Aktivieren Sie die Fehlerberichterstattung. Und erzähle den Fehler.

5) Wenn Sie umleiten, müssen Sie nach header(...); exit;

verwenden

6) verwenden Sie immer 301 oder 302 als Referenz:

%Vor%

7) Wenn keiner der oben genannten Punkte hilft, verwenden Sie die JAVSCRIPT-Umleitung (nicht von Google empfohlen), aber es könnte die letzte Chance sein ...:

%Vor%     
T.Todua 19.06.2015 21:20
quelle
2

versuche das. hat für mich gearbeitet.

echo "<meta http-equiv='refresh' content='0;url=http://www.yoursite.com'>";

    
karto 23.04.2012 07:25
quelle
1

Auch wenn Sie die Header-Funktion verwenden, muss diese zuerst aufgerufen werden, bevor ein Text (auch ein Leerzeichen) auf den Client geschrieben wird. Überprüfen Sie daher erneut, dass vor dem Aufruf keine Leerzeichen ausgegeben werden

%Vor%     
Toby Allen 06.08.2009 23:22
quelle
1

Es mag eine seltsame Lösung sein, aber versuchen Sie es, ändern Sie die Seitencodierung von utf8 in ANSI und es wird funktionieren.

Verwenden Sie einen beliebigen Texteditor und speichern Sie die Seite als ANSI-Codierung und laden Sie sie auf Ihren Online-Server hoch.

    
Mahmoud Salem 11.06.2012 09:50
quelle
1

Das Hinzufügen von ob_start () löste dieses Problem.

    
Gayathri 27.04.2016 10:17
quelle
0

Was passiert genau, wenn Sie die Seite besuchen? Sie können Firebug oder jedes andere Tool ausprobieren, mit dem Sie HTTP-Header analysieren und überprüfen können, ob die Weiterleitung tatsächlich stattfindet und ob der Header Location wirklich vorhanden ist.

    
Adam Byrtek 06.08.2009 23:22
quelle
0

Sie sollten auch überprüfen, dass Sie zu einem gültigen Speicherort umleiten und dass der Speicherort ordnungsgemäße 404 und 500 Fehlermeldungen / Seiten eingerichtet hat. Es kann sein, dass Sie einfach einen schlechten Ort umleiten.

    
arbales 06.08.2009 23:24
quelle
0

Seltsam, aber das Entfernen von Leerzeilen in PHP funktionierte für mich: - \

Code vorher:

%Vor%

Code, der funktioniert hat:

%Vor%     
lucorp 20.05.2013 09:11
quelle
0

Probieren Sie es aus (für mich):

echo '<script>window.location.replace("http://www.example.com")</script>';

Anstelle von

header("Location: http://www.example.com");

    
Umair Sultan 01.04.2017 19:39
quelle
0

Wenn Ihre Indexseite eine HTML-Datei ist, funktioniert sie möglicherweise nicht. Ändern Sie es in index.php und verwenden Sie diesen Code:

%Vor%     
Emre AYDIN 19.04.2017 02:11
quelle
0

Ich hatte tatsächlich einen ähnlichen Fall, in dem ich eine Admin-Seite hatte, die oben auf allen meinen anderen Seiten enthalten war. Am Anfang jeder Seite unter der Zeile:

%Vor%

Ich hätte die PHP-Logik:

%Vor%

Das Problem dabei war, dass ich anderswo auch header(... aufgerufen / manipuliert habe. Nachdem ich viel Zeit mit meinem Code verbracht habe, gebe ich zu, dass ich nicht herausfinden konnte, wo das Problem lag. Dann dachte ich, dass jede dieser Dateien meine admin.php Datei trifft, bevor Sie etwas anderes tun. Also habe ich darüber nachgedacht, was passieren würde, wenn ich die Logik, die oben in jeder meiner Ansichten stand (weil ich nichts sehen wollte, wenn du nicht eingeloggt bist), in meine admin.php -Datei steckst?

Was passierte, war, dass, bevor es in meinen Ansichten überhaupt zu einem php / html kam, es auswertete, ob jemand eingeloggt war ( $_SESSION['username']) ) und wenn es NULL war, dann wurde ich einfach auf die adminLogin Seite weitergeleitet . Ich habe diese Logik direkt vor meinen Schalter gestellt und es hat perfekt für alle meine Dateien funktioniert, die einmal die Logik erforderten. Die Art und Weise, wie ich in der Entwicklung gearbeitet habe, hat aber viele Probleme in der Produktion aufgeworfen. Ich habe festgestellt, dass das Verschieben der Umleitungslogik in meine admin.php -Datei nicht nur die doppelte header(... -Manipulation vermieden hat, sondern meinen Code effizienter gemacht hat, indem die überflüssige Logik aus meinen View-Dateien und in meine admin.php -Datei entfernt wurde.

Anstatt die Logik in jede Ansichtsdatei zu schreiben, legen Sie sie einmal in Ihren Controller, bevor Sie umschalten. Klappt wunderbar! Dies ist nützlich, wenn Sie nicht möchten, dass jemand auf die sensiblen Ansichten zugreift, es sei denn, sie melden sich an. In meinem Fall war dies für mein CMS wichtig. Wenn jedoch einige Dateien angezeigt werden sollen, ohne dass sie sich anmelden müssen, ist die ursprüngliche Logik wahrscheinlich ausreichend. Es sieht so aus, als ob Sie bereits eine Lösung gefunden haben, aber hoffentlich kann dies hilfreich sein, wenn Sie diesen Fehler erneut haben. :)

    
M.C. 20.03.2018 20:10
quelle

Tags und Links