Prevent multiple inserts when submitting a form in PHP
Sometimes the user may press Enter twice, and the post is inserted twice.
Is there a solution to prevent this other than check if there is already a post with the same title and content?
Solutions:
1- Use JavaScript to stop it from sending
3 - Include a unique token on each POST worked for me. However, my form still submits when a user refreshes the page (F5). I managed to solve this by adding a reset:
// reset session token $_SESSION['token'] = md5( $_POST['token'] . time() );my final scripts goes like:
if (isset($_SESSION['token'])) { if (isset($_POST['token'])) { if ($_POST['token'] != $_SESSION['token']) { echo '<h3>Oops! You already submitted this request.</h3>'; } else { // process form // reset session token $_SESSION['token'] = md5( $_POST['token'] . time() ); } } else { echo 'post token not set'; $_SESSION['token'] = md5( $somevariable . time() ); } }oh! don't forget to add session_start(); before <!DOCTYPE>
I am a PHP newbie so please correct me if you find irregularities.
Source:
How to prevent multiple inserts when submitting a form in PHP?