Aron Rotteveel de Incluir un token único en cada POST funcionó para mí. Sin embargo, mi formulario aún se envía cuando un usuario actualiza la página (F5). Me las arreglé para resolver esto mediante la adición de un restablecimiento:
// reset session token
$_SESSION['token'] = md5($_POST['token'] . time());
mis guiones finales dice así:
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! no se olvide de agregar session_start();
antes de <!DOCTYPE>
Soy un novato en PHP, por favor corríjanme si encuentra irregularidades.
¿Se puede desactivar el evento que se activa al presionar enter? –
Golpéelos cada vez que lo hagan. Eventualmente aprenderán :) – Gordon
Lo recomiendo usando las teclas de forma. Eche un vistazo a esto aquí: http: //net.tutsplus.com/tutorials/php/secure-your-forms-with-form-keys/ –