2017-02-04 2 views
1

Hallo Ich versuche, eine Datei zu lesen, die eine URL enthalten, wo ich umleiten möchte ich bin mit diesemHeaderort Fehler Umleitung

$file = 'test.txt'; 
$myfile = fopen($file, "r") or die("Unable to open file!"); 
$link = fread($myfile,filesize($link)); 
fclose($myfile); 
header("Location: $link"); 

Der Browser zeigt mir eine Fehlermeldung „Die Seite isn't korrekt umleiten“

Die Datei test.txt enthält

http://www.google.es 
+1

dumme aber notwendige Frage. Hast du versucht, einen echo $ link zu machen und zu überprüfen, ob es nicht versteckte Zeichen gibt? –

+1

Warum rufen Sie nicht einfach 'file_get_contents()' auf, wenn Sie die gesamte Datei gleichzeitig lesen möchten? – Barmar

Antwort

3

diese Aussage Siehe hier,

$link = fread($myfile,filesize($link)); 
         ^^^^^^^^^^^^^^^ 

filesize() Funktion erwartet den Dateipfad als sein Argument, aber Sie übergeben eine undefinierte Variable$link.

So sollte die obige Aussage wie folgt sein:

$link = fread($myfile,filesize($file)); 

Verwenden Sie auch exit(); nach header(...); weil header(...); selbst nicht ausreicht, um den Benutzer auf eine andere Seite umgeleitet werden.

header("Location: $link"); 
exit(); 
+0

deins ist die bessere (erklärte) antwort. Ich schrieb meins, als ich die gelbe Box oben sah, die eine Antwort gegeben wurde lol –

+0

@ Fred-ii- Ja, manchmal passiert es mir auch.;-) –

+1

und tatsächlich den 'exit;' nach dem Header hinzuzufügen. Ich wollte es auch vorschlagen (TBH). –

2

Sie verwenden die falsche Variable für

filesize($link) 

die $file

filesize($file) 

(Edit) sein sollte:

Fehlerbeseitigungsverfahren (und mit error reporting eingestellt zu fangen und anzuzeigen).

Nachdem die Kopf- und Echo der $link Variable

$file = "test.txt"; 
$myfile = fopen($file, "r") or die("Unable to open file!"); 
echo $link = fread($myfile,filesize($link)); 
fclose($myfile); 
// header("Location: $link"); 

kommentiert out ... Sie mit dem folgenden Hinweis/Warnung ausgegeben worden wäre:

Hinweis: Nicht definierte Variable: Link in/path/to/file.php in Zeile x
Warnung: fread(): Länge Parameter muss größer sein als 0 in /path/to/file.php in Zeile x

Da fread()filesize nicht herausfinden konnte, konnte es nicht "gelesen" werden.

Und natürlich, wie Rajdeep in seiner (viel besser) Antwort darauf hinwies, exit; nach Header hinzuzufügen. Ihr hätte (wahrscheinlich) gearbeitet, aber es ist in der Tat eine bessere Praxis.