2017-03-11 2 views
2

Going Mail innerhalb PHP-Server-Code aufrufen, dann zurück zur HTML-Seite. schrieb den folgenden Servercode:PHP - zurück zum HTML-Formular

<!DOCTYPE HTML> 
<HEAD> 
    <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 
</HEAD> 
<BODY> 
    <?php 
    $referer = filter_input(INPUT_SERVER, 'HTTP_REFERER'); // real referrer detected 
    // do something or nothing 
    header("Location: $referer"); 
    ?> 
</BODY> 

Dieser Code erzeugen einen Fehler "Warnung: Kann nicht modify header information - headers already sent by ...". Warum?

+0

http://stackoverflow.com/questions/8028957/how-to-fix-headers -bereits -send-error-in-php ist ein mögliches Duplikat. –

+0

Die Header werden, wie der Name schon sagt, vor dem Inhalt gesendet. Aber wenn Ihr PHP-Code ausgeführt wird, wurden einige Inhalte (der HTML-Code vor ' axiac

Antwort

1

header() bei normalem Gebrauch, muss vor aufgerufen werden, um eine tatsächliche Leistung, vor der Verwendung
                  und bereits Daten senden gesendet.

☼►Solution  :   dass zu manipulieren und die Fähigkeit haben, Header() zu verwenden, wo immer Sie wollen ..
dann hat PHP Output Control-Funktionen, die es Ihnen ermöglichen, zu steuern, wenn die Ausgabe (wie HTML Code) wird auf dem Server gepuffert, bis Sie es senden. so folgen Sie den Anweisungen unten:

unter Verwendung ob_start am Anfang und ob_end am Ende

✔ Code mit diesem ersetzen:

<?php 
ob_start(); 
?> 
<!DOCTYPE HTML> 
<HEAD> 
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 
</HEAD> 
<BODY> 
<?php 
$referer = filter_input(INPUT_SERVER, 'HTTP_REFERER'); // real referrer detected 
// do something or nothing 
header("Location: $referer"); 
?> 
</BODY> 

<?php 
ob_end_flush(); 
?> 

Warnung: make sicher, es gibt keine Whitespace vor <?php ob_start();
oder es wird den gleichen Fehler werfen.
.........................................

✘ - die falsch Weg:

<?php 
ob_start(); ?> 

✔ - die Rechts Weg:

<?php 
ob_start(); ?> 
1

Ihr PHP-Code befindet sich in der Mitte des HTML, das als Ausgabe betrachtet wird. Sobald die Ausgabe generiert wurde, funktionieren Funktionen wie header() nicht mehr und geben einen Fehler zurück. Die Lösung ist, den PHP-Code an den Anfang der Datei vor jedem HTML zu verschieben.

<?php 
$referer = filter_input(INPUT_SERVER, 'HTTP_REFERER'); // real referrer detected 
// do something or nothing 
header("Location: $referer"); 
?> 
<!DOCTYPE HTML> 
<HEAD> 
    <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 
</HEAD> 
<BODY> 
</BODY>