After calling the redirect function header, should I call exit or not?
<?php // fileA $urlFailToGoTo = '/formerror.php'; if (sth) { header(sprintf("Location: %s", $urlFailToGoTo)); exit(); //should I call exit() here? or return? } ?>
Thank you
The header() function in PHP sends a raw HTTP header to a client or browser. Before HTML, XML, JSON, or other output is given to a browser or client, the server sends raw data as header information with the request (particularly HTTP Request).
One is header which starts with string “HTTP/” used to figure out the HTTP status code to send. Another one is the “Location” which is mandatory. replace: It is optional which indicates whether the header should add a second header or replace previous.
You definitely should. Otherwise the script execution is not terminated. Setting another header alone is not enough to redirect.
You should, just like @rgroli explains. If you do not want to bother with brackets, you can also call header()
IN exit()
:
if(sth) exit(header("Location: http://example.com"));
Location header in HTTP/1.1 always requires absolute path see the note here.
Note: This is not a hack, since the exit code is used only if the parameter is integer, while header()
produces void (it exits with code=0, normal exit). Look at it as exit_header()
function like it should be after Location
header.
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