Valery Bulash Valery Bulash - 9 months ago 26
HTML Question

PHP - return back to HTML form

Going to call mail within PHP server code then return back to HTML page.
Wrote the following server code:

<!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>


This code produce an error "Warning: Cannot modify header information - headers already sent by...".
Why?

Answer Source

header() in normal usage ,must be called before any actual output is sent,
                 and you already send data before using it .

☼►Solution  :   to manipulate that and have the ability to use header() wherever you want ..
then PHP has Output control functions which allow you to control when the output (such as HTML code) is being buffered in the server until you send it . so follow the Instructions down bellow :

by using ob_start in the beginning and ob_endin the end

✔ replace your code with this :

<?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( );
?>

Warning : make sure there is no Whitespace before <?php ob_start( );
or it will throw the same error .
.........................................

✘ - the wrong way :

  <?php
ob_start( ); ?>

✔ - the Right way :

<?php
ob_start( ); ?>