0

I have a question I looked it up everywhere and I still seem stuck.

If I submit a form via post -> variable -> database and then redirect to another page using header(location:page.php); in the time it takes to redirect and I click on the submit button it still inserts duplicate data into the database.

How do I prevent that from happening? As I read on tokens but I can't see how it will work without processing my form data on another page and I don't want to do that.

Please see below 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 (please not its just for en example):

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

So how do I prevent double submit without disabling the button? Please assist.

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
Christiaan
  • 59
  • 7

0 Answers0