Cómo evitar múltiples inserciones en el envío de formularios en PHP
Se pueden producir múltiples inserciones al enviar un formulario cuando el usuario presiona el botón de enviar varias veces. Esto puede provocar una duplicación de datos no deseada. Hay varios enfoques para abordar este problema:
Desactivación del botón de envío de JavaScript:
Este método utiliza JavaScript para deshabilitar el botón de envío después de su hizo clic. Sin embargo, no es confiable ya que los formularios se pueden enviar sin usar el botón o con JavaScript deshabilitado.
Marca de tiempo de sesión PHP:
Este enfoque establece una variable de sesión ($_SESSION['posttimer']) en la marca de tiempo actual al enviar el formulario. Durante el procesamiento del formulario, verifica si la variable existe y la compara con la marca de tiempo actual. Si la diferencia horaria es menor que un umbral predefinido (por ejemplo, 2 segundos), se detecta un envío doble.
Inclusión de token único:
Este método implica incluir un token único en cada formulario. Una variable de sesión contiene el token utilizado en el formulario. Al enviar el formulario, se genera un nuevo token. Si el token enviado no coincide con el token de sesión, se considera un envío doble. Ejemplo:
// form.php
$_SESSION['token'] = md5(session_id() . time());
echo '';
// foo.php
if (isset($_SESSION['token'])) {
if (isset($_POST['token']) && $_POST['token'] != $_SESSION['token']) {
// Double submit detected
}
}
Al implementar uno de estos métodos, puede evitar de manera efectiva múltiples inserciones al enviar formularios en PHP, garantizando la integridad de los datos y evitando la duplicación involuntaria.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3