"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como evitar múltiplas inserções ao enviar formulários em PHP?

Como evitar múltiplas inserções ao enviar formulários em PHP?

Publicado em 2024-11-08
Navegar:989

How to Prevent Multiple Inserts When Submitting Forms in PHP?

Prevenindo múltiplas inserções no envio de formulário em PHP

Múltiplas inserções ao enviar um formulário podem ocorrer quando o usuário pressiona o botão enviar várias vezes. Isso pode levar à duplicação involuntária de dados. Existem várias abordagens para resolver esse problema:

  1. Desativação do botão de envio de JavaScript:

    Este método usa JavaScript para desativar o botão de envio após ele ser clicado. No entanto, não é confiável, pois os formulários podem ser enviados sem usar o botão ou com o JavaScript desabilitado.

  2. Data e hora da sessão PHP:

    Esta abordagem define uma variável de sessão ($_SESSION['posttimer']) para o carimbo de data/hora atual no envio do formulário. Durante o processamento do formulário, ele verifica se a variável existe e a compara com o carimbo de data/hora atual. Se a diferença de tempo for menor que um limite predefinido (por exemplo, 2 segundos), um envio duplo será detectado.

  3. Inclusão de token exclusivo:

    Este método envolve a inclusão de um token exclusivo em cada formulário. Uma variável de sessão contém o token usado no formulário. Após o envio do formulário, um novo token é gerado. Se o token enviado não corresponder ao token da sessão, será considerado um envio duplo. Exemplo:

    // 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 } }

Ao implementar um desses métodos, você pode efetivamente evitar múltiplas inserções ao enviar formulários em PHP, garantindo a integridade dos dados e evitando duplicação não intencional.

Declaração de lançamento Este artigo foi reimpresso em: 1729517478 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3