The answer to this is quite involved and getting it right takes a little care, but here are the essential points of one approach:
- The action must be set to load the current page and you can do this by changing the
action attribute in the tag to: action=""
- In the template file for this page, detect when the page loads after a form submission. You can do this by checking the state of the $_POST variable.
- If there are post variables, process the form submission in the template file. You need to look at what happens in "send_form.php" to figure out what to do. Take care that you don't introduce security issues (e.g. be sure to use the NONCE).
- Redirect back to the same page to get rid of the post variables. If you don't do this people will get those "Do you want to resubmit the form" warning messages. See the PHP header() function for doing the redirect and note that this must happen before any output is sent to the page.
- Use server sessions to display a "Form submission successful". Set a session variable to your message before the redirect, then detect it when the page loads, display it, and remove it so the message doesn't display the next time the page loads.
That should give you a starting point.
If anyone else has a simpler solution, I'd love to hear it too.