PHP的双重形式提交防止 [英] php double form submit prevent

查看:63
本文介绍了PHP的双重形式提交防止的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我第一次单击指向输出空白数据的表单的链接时,我想避免重复提交表单或避免不必要的提交.

I would like to avoid the double form submit or unwanted submit when first time clicking the link to the form which outputs empty data.

我设法找到中的代码,似乎可以防止出现两次或一次空白表单或以前的表单提交,但也可以防止在期望的情况下提交表单.

The code I managed to find there , seems to prevent double or single empty form or previous form submit but it also prevents to submit the form when expected.

代码的主要部分如下,所有部分都在同一个php文件中.

Main parts of the code as below, all parts on the same php file.

<?php 
session_start(); 
$_SESSION['token'] = md5(session_id() . time());
?>

<!DOCTYPE HTML>
...

<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>" name="form_submitted">

<input type="hidden" name="token" value="<?php echo $_SESSION['token'] ?>" >

<input type="checkbox" name="catexp[]" value="1">Input1
<input type="checkbox" name="catexp[]" value="2">Input2
<input type="checkbox" name="catexp[]" value="3">Input3

<input type="Submit"  name="Submit" >

</form>

<?php

if (isset($_SESSION['token']))
{
    if (isset($_POST['token']))
    {
        if ($_POST['token'] != $_SESSION['token'])
        {
            // double submit
        }
        else
        {

            // FORM PROCESSING HERE


        }// else ($_POST['token'] == $_SESSION['token'])

    } // if (isset($_POST['token']))

} // if (isset($_SESSION['token']))

?>

在条件条件下运行表单处理需要做什么?

What needs to be done to make the form processing in the condition run?

感谢 帕斯卡

推荐答案

首次提交表单时,只需清除$_SESSION['token']

When first time form is submitted simply clear the $_SESSION['token']

if (isset($_SESSION['token']))
    {
        if (isset($_POST['token']))
        {
            if ($_POST['token'] == $_SESSION['token'])
            {
                unset($_SESSION['token']);
                // do form processing

            }
            else
            {
                // double submit 

这篇关于PHP的双重形式提交防止的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆