"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo evitar múltiples inserciones al enviar formularios en PHP?

¿Cómo evitar múltiples inserciones al enviar formularios en PHP?

Publicado el 2024-11-08
Navegar:380

How to Prevent Multiple Inserts When Submitting Forms in PHP?

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:

  1. 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.

  2. 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.

  3. 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.

Declaración de liberación Este artículo se reimprime en: 1729517478 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

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