Frage von ikinikin, 173

Warum funktioniert der PHP header ("Location: http://www.google.de"); exit; nicht?

Das was ich geschrieben habe:

"<html>

    <head>

        <meta charset="UTF-8">

        <title></title>

    </head>

    <body>       

<?php

sleep(3);

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

exit; 

?>

    </body>

</html>"

Das funktioniert aber nicht. Danke für Antworten

Antwort
von maximilianus7, 70

du solltest die antwort von happyfish ernst nehmen. schon ein blank oder zeilenvorschub vor dem <?php ist schon eine ausgabe und für die header-funktion schädlich. es wird dann eine warning ausgegeben.
je nach provider sind warning-meldungen ausgeschaltet oder nicht. setz mal
error_reporting( E_ERROR | E_WARNING | E_PARSE);
als 1. php-anweisung.

Kommentar von ikinikin ,

Hab ich doch und jetzt gehts. Aber kann ich nach dem Php mit dem Header boch HTML machen?

Kommentar von MonkeyKing ,

Nein - das ist ja ein redirect, der User wird auf eine andere Seite umgeleitet. Was versuchst du zu erreichen? Google irgendwo auf einer Seite einzubinden? Das geht so nicht. Auch nicht mit iframes. Du kannst aber die Google Suche auf anderem Wege einbinden wenn es das ist was du willst.

Kommentar von ikinikin ,

ne ich habs jetzt hingekriegt. Ich wollte das man wenn man auf einen Submit Knopf drückt auf Google kommt. Habs aber geschafft. Danke

Antwort
von usberlin, 45

Die Seite darf nach dem Umleitungsbefehl nix mehr ausgeben - bei Dir kommt aber durch <body> und </html> noch was hinterher (mit dem exit verlässt Du lediglich den PHP-Code).

Kommentar von ikinikin ,

ja ich habs jetzt verstanden 😁

Antwort
von happyfish2, 87

Du darfst keine Ausgaben vor dem header() Aufruf haben. Von daher den ganzen HTML-Kram rausnehmen.

Kommentar von ikinikin ,

Hab ich und es geht nicht 

Kommentar von Gutfrager156 ,

probier mal auf der Kommandozeile direkt die Datei mit PHP aufzurufen:

php test.php
Kommentar von Gutfrager156 ,

Ich habe den Code oben mal kopiert, weil ich eigentlich sehen wollte, ob die Fehlermeldung geworfen wird. Bei mir hat das so wie oben funktioniert.

Offensichtlich sind "keine Ausgaben" nicht von den vorhandenen Tags betroffen. Wusste ich auch nicht.

Kommentar von ikinikin ,

lol habs nochmal neu geschrieben und jetzt geht es...

Antwort
von yerooke, 84

Ist die Datei mit der Endung .php oder .html - Wenn die Dateiendung .html hat dann kann es nicht funktionieren. Bitte die Datei in .php Umbenennen.

Kommentar von ikinikin ,

Es ist eine PHP datei

Kommentar von Gutfrager156 ,

Wenn der Webserver entsprechend konfiguriert ist, geht das problemlos.

Kommentar von happyfish2 ,

Es kann so nicht funktionieren, erst recht nicht "problemlos"

Kommentar von Gutfrager156 ,

Für Apache2:

AddType application/x-httpd-php5 .html .htm

So wird PHP in HTML Dateien problemlos ausgeführt.

Kommentar von yerooke ,

Mich irritieren die Anführungszeichen und der HTML-Code , was soll das ganze wen ehh umgeleitet wird?

Mach doch einfach das:

<?php
sleep(3);
header("Location: http://www.xxxxxx.de");
?>
Kommentar von ikinikin ,

Hab das gerade probiert und das geht nicht. Und ja mein Server kann PHP

Kommentar von yerooke ,

Schalte das Error Reporting ein und schau mal was PHP als Fehler rausspuckt!

Antwort
von ikinikin, 73

Ich wollte Fragen wie ich das lösen kann oder warum Das nicht funktioniert

Antwort
von Gutfrager156, 93

Meine Antwort:

Ich wollte losfahren, aber mein Auto funktionierte nicht.

Was würdest Du darauf antworten?

Kommentar von ikinikin ,

"Geh in die Werkstatt"

Kommentar von Gutfrager156 ,

1. Wäre Dir wohl nicht geholfen, wenn Dir hier jemand antwortet: "Dann lass es von einer Webagentur entwickeln"

2. Würde die Werkstatt mit der Fehlerbeschreibung auch nicht helfen können.

Kommentar von ikinikin ,

Ja reg dich ab hab ja jetzt geschrieben was ich wissen will...

Kommentar von Gutfrager156 ,

Wie kommst Du darauf, dass ich mich aufrege?

Ich versuche die Hilfe zur Selbsthilfe. Scheint aber nicht richtig anzukommen, daher im Klartext:

Wir wissen nur: "Funktioniert nicht". Wir wissen aber weder, was die Fehlermeldung ist, noch was Du selbst schon herausgefunden hast, indem Du gegooglet hast, noch was Du alles gemacht hast oder in welcher Umgebung Du Dich befindest.

Vielleicht musst Du bloß speichern? Vielleicht hast Du gar keinen Server, der PHP unterstützt? Vielleicht stürzt jedes Mal der Server ab? Vielleicht bekommst Du eine klare Fehlermeldung?

Das musst Du schon verraten, wenn Du Hilfe möchtest. So, wie man eben auch sagt, dass man deswegen nicht losfahren konnte, weil sich die Handbremse nicht lösen ließ.

Kommentar von ikinikin ,

Mein Server funktioniert und unterstütz PHP. Es kommt keine Fehlermeldung. Das Sleep funktioniert dann passiert nichts mehr und in google habe ich nichts dzu gefunden.

Kommentar von Gutfrager156 ,

http://php.net/manual/de/function.header.php

"Beachten Sie, dass Sie die Funktion header() aufrufen müssen,
bevor Sie irgendeine andere Art von Ausgabe (seien es normale HTML-Tags,
Leerzeilen in einer Datei oder von PHP) zum Client schicken."

Eigentlich würde ich eine Fehlermeldung erwarten, aber probier das mal aus.

Keine passende Antwort gefunden?

Fragen Sie die Community