I have the following dumb code:
<?
echo "<html><br><br><br><div id='loading'><p><img src='loader.gif'> Please wait 6 seconds...</p></div></html>";
sleep(6);
header('Location: http://google.com/');
?>
Why doesn't the HTML piece of code show up in the browser before sleeping 6 seconds and then redirecting? The codes doesn't output the HTML code at all, waits 6 seconds then sends me to the location. What do I do wrong?
This will not work. Because the first echo will start output. After that header call will just fail. However you can do it with refresh header on PHP side.
<?php
header('Refresh: 5;URL=http://www.google.com/'); // refresh header
echo "<html><head>";
// meta refresh
echo "<meta http-equiv=\"refresh\" content=\"5;URL=http://www.google.com/\" />";
echo "</head><body><br><br><br><div id='loading'><p><img src='loader.gif'> Please wait 6 seconds...</p></div></body></html>";
?>
<script type="text/javascript">
// javascript refresh
window.setTimeout(function(){
location.href="http://www.google.com";
},5000);
</script>
On the above script 3 things were handled.
Note: Meta refresh is deprecated (though I have shown in example). HTTP Refresh header is recommended.
You would need to do something like (this won't work):
<?php
echo "<html><br><br><br><div id='loading'><p><img src='loader.gif'> Please wait 6 seconds...</p></div></html>";
@ob_flush(); //flush the output buffer
flush(); //flush anything else
sleep(6); //wait
header('Location: http://google.com/'); //redirect
?>
However: This won't work as expected, you cannot redirect the browser after sending content (PHP will throw and error and tell you this)
Instead you should:
<?php
echo "<html><meta http-equiv=\"refresh\" content=\"6;URL='http://YOURURL.com/'\"><br><br><br><div id='loading'><p><img src='loader.gif'> Please wait 6 seconds...</p></div></html>";
?>
Where the <meta http-equiv="refresh" content="6;URL='http://YOURURL.com/'">
tag is an HTML tag to tell the browser to change to the provided url after 6 seconds
To avoid adding the meta tag, you could also do this:
<?php
header('Refresh: 6;URL=http://www.YOURURL.com/');
echo "<html><br><br><br><div id='loading'><p><img src='loader.gif'> Please wait 6 seconds...</p></div></html>"
?>
But to be safe you should add both the header and the meta tag!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With