"Harlequin" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > What's the best way of emptying my variables once my form has done with them > because although I disconnect from the database if the user refreshes the > screen it sends another e-mail to me. > > -- > ----------------------------- > Michael Mason > Arras People > www.arraspeople.co.uk > -----------------------------
Hello, I don't know if there is really a best way to do this but, some good ways: - The first step is to avoid multiple submits with the same form when the user submits severals times. You have to add a small script to avoid this: <script language="JavaScript"> var SubmitCount = 0; function CheckSubmit() { if (SubmitCount == 0) { SubmitCount++; pPost.submit(); } else { // Anti stress alert ;-)) alert("The form has been sent. Please wait.... take time to drink a coffee."); return false; } } </script> <form action="myscript.php" method="post" name="myscript"> <input type=... your form here... <input name="submit" type="button" value="Sumit" onClick="CheckSubmit();"> </form> - The second step is to avoid the refresh process: You can use a redirect: header('location: ' . $_SERVER['PHP_SELF']); exit; And you can also used a php variable to detect multiple submit: The client side code becomes: -- mypage.html <script language="JavaScript"> var SubmitCount = 0; function CheckSubmit() { if (SubmitCount == 0) { SubmitCount++; pPost.submit(); } else { // Anti stress alert ;-)) alert("The form has been sent. Please wait...."); return false; } } </script> <form action="myscript.php" method="post" name="myscript"> <input type="hidden" value="[[CONTROL]]" name="control"> ... <input type=... your form here...> ... <input name="submit" type="button" value="Sumit" onClick="CheckSubmit();"> </form> -- myscript.php // When you display the page with the form // Load the form page $template =& new CTemplate("mypage.html"); // Put the control value $template->assign("[[CONTROL]]", "" . time() . mt_rand()); ... // When you get the form data // Two cases: if ($_SESSION['sav_control'] != $_POST['control']) { // Really the first time: the sav_control variable has not been set // your code to process the form data // Keep the control variable $_SESSION['sav_control'] = $_POST['control']; // Display the next page ... } else { // Not the first time: the sav_control variable has been set // Display the next page ... } So, if the user uses the back button, you keep in a session that this form has already been sent. Sorry if I use a template style... I think it is a better way to have a good split between HTML and PHP and it's always easier when you want to explain something ;-) Hope this helps... Regards Patrick -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php