如果用户双重提交,则停止写入数据库

时间:2016-11-01 09:40:50

标签: php html session redirect token

我有一个问题,我到处查看它,但我似乎仍然卡住了。

如果我通过post -> variable -> database提交表单,然后重定向到另一个表单 在重定向和我需要的时间内使用header(location:page.php);的页面 单击提交按钮,它仍然会将重复数据插入数据库。

如何防止这种情况发生?当我阅读令牌时,我看不出它是怎么回事 将无法处理我在其他页面上的表单数据,我不想这样做 去做。

请参见下面的html:

<form name="frmall" class="col s12" action="" method="post">
    <!--basic info------------------------------------------------------------------------------------------------------------->
    <div class="divider"></div>
    <div class="section">
        <h5>Basic Member Information</h5>
        <div class="row">
            <div class="input-field col s6">
                <input id="first_name" name="txt_name" type="text" class="validate"
                    value="<?php if(isset($_POST['btnContinue'])){echo $_POST['txt_name']; }  ?>">
                <label for="first_name">First Name</label>
            </div>
            <div class="input-field col s6">
                <input id="last_name" type="text" name="txt_surname"
                    class="validate"
                    value="<?php if(isset($_POST['btnContinue'])){echo $_POST['txt_surname']; } ?>">
                <label for="last_name">Last Name</label>
            </div>
            <div class="input-field col s6">
                <input id="icon_telephone" type="tel" name="txt_number"
                    class="validate"
                    value="<?php if(isset($_POST['btnContinue'])){echo $_POST['txt_number']; } ?>">
                <label>Telephone</label>
            </div>
            <div class="input-field col s6">
                <input id="email" type="email" name="txt_email" class="validate"
                    value="<?php if(isset($_POST['btnContinue'])){echo $_POST['txt_email']; } ?>">
                <label for="email" data-error="wrong" data-success="right">Email</label>
            </div>
            <div class="input-field col s6">
                <input id="idnumber" type="text" name="txt_idnumber"
                    class="validate"
                    value="<?php if(isset($_POST['btnContinue'])){echo $_POST['txt_idnumber']; }  ?>">
                <label>ID Number</label>
            </div>
        </div>
        <button class="btn waves-effect waves-light" type="submit"
            name="btnCancel">Cancel</button>
        <button class="btn waves-effect waves-light" type="submit"
            name="btnContinue">Continue</button>

    </div>
</Form>

PHP(请不要仅仅为例子):

if (isset($_POST['btnContinue'])) {
      $Conn->insert_main_member($name, $surname, $number, $idnumber, $email);
      header(location:page.php);
   }

那么如何在不禁用按钮的情况下阻止双重提交?请协助。

0 个答案:

没有答案