I have spent over 2 hours scouring the net trying to figure this out. I am trying to stop multiple form submission any faster than 60 seconds. Here is what I am using.
session_start();
if (!isset($_SESSION['last_submit']))
    $_SESSION['last_submit'] = time();
if (time()-$_SESSION['last_submit'] < 60)
    die('Post limit exceeded. Please wait at least 60 seconds');
else
    $_SESION['last_submit'] = time();
I found this bit here on the site but haven't been able to figure anything else out as far as getting it to work. I have this bit of code on my page at the beginning that does the DB query with the previous pages POST results. Do I need to set $last_submit to a certain value? Any help is appreciated.
You have two problems. Firstly, on the first execution you are setting the session value to time(), so the first try will always produce the limit exceeded error. The second problem is you have a typo in $_SESION.
Try:
session_start();
if (isset($_SESSION['last_submit']) && time()-$_SESSION['last_submit'] < 60)
    die('Post limit exceeded. Please wait at least 60 seconds');
else
    $_SESSION['last_submit'] = time();
Also it should be noted that is this not foolproof because users can refuse cookies or delete the session cookie, in order to bypass your check.
The last statement:
$_SESION['last_submit'] = time();
should be:
$_SESSION['last_submit'] = time();
You forgot an S...
Also this piece of code will die meaning that the die statement will be executed.
Alternative:
if (time() - ( isset($_SESSION['last_submit'])?$_SESSION['last_submit']:0 )< 60) 
    die('Post limit exceeded. Please wait at least 60 seconds'); 
// update the session
$_SESSION['last_submit'] = time(); 
                        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