Reputation: 3129
I am writing a web page, which searches in a table and displays the data if all is well and a message if not. The code looks roughly like this:
<?php session_start(); ?>
<html><head> ..... </head>
<body>
<form action="search.php" method="post"> {parameters for searching} </form
<?php include_once('display_results.php');?>
<?php if (isset($_SESSION['message'])) {
echo "<script type=\"text/javascript\">alert(\"".$_SESSION['message']."\")</script>";
unset($_SESSION['message']);
} ?>
</body>
</html>
the display_results.php looks like this:
<?php
//query table get results build output and if there was an error call do_exit($message)
function do_exit($message) {
//unset objects close connections and misc finalizations
$_SESSION['message'] = $message;
die();
}
My problem is that when die() is called, it seems that not only does the display_results.php script stops, but also the original php file, so even though the message is set, there is no alert. On the other hand, if I remove the die() statement, and after each do_exit() I execute return this works correctly.
Now this isn't a huge problem, I can just make it so that I call return after each do_exit() but I was wandering if there was a way to exit the script but continue with the execution of the original php file
Thanks in advance for any help you can provide.
Upvotes: 0
Views: 3645
Reputation: 136
You don't actually have to call die() at all. Just let the script come to a natural ending. I assume you return results using echo or print statements. If you need performance you can close the session so that other calls can run on it.
Upvotes: 0
Reputation: 2874
Why would you want to do that? Just exit a function correctly (with return). It would be possible to do: return do_exit();
and replace die()
in your do_exist()
function with return;
or return false;
(if you want to return a value).
die() (or exit()) always ends the script execution, not only the execution of one script-file or a function, that wouldn't be useful.
Upvotes: 2
Reputation: 77
why don't you use return false;
at the end of your function do_exit()
?
Upvotes: 1