[PHP] Checking if a form has been submitted, the correct way...-VBForums
Results 1 to 9 of 9

Thread: [PHP] Checking if a form has been submitted, the correct way...

  1. #1

    Thread Starter
    Frenzied Member I_Love_My_Vans's Avatar
    Join Date
    Jan 2005
    Location
    In the PHP compiler
    Posts
    1,275

    Resolved [PHP] Checking if a form has been submitted, the correct way...

    Checking that a form has been submitted is one of the first things you will encounter when handling form inputs. For arguements sake, here is my example form:

    Code:
    <form action="script.php" method="post">
       <input name="email" type="text" />
       <input name="submit" type="submit" value="Submit">
    </form>

    What the form above will do is post the variables email and submit to the action, script.php.

    At this stage most people tend to check to see if a form has been executed by verifying if the submit button variable has been delivered to the receiving script, using code similar to this:

    PHP Code:
    if(isset($_POST['submit'])) 
    In most cases this will work, but there are a few occasions when it won't. To identify when this condition will fail we have to look at the different ways of submitting a form.

    There are two ways of submitting a form, one is to click the submit button, the other is to hit return, of which will envoke the submit button. The problem occurs when you hit the return button (as most people do), when using Internet Explorer (the most commonly used browser) and when the submit button does not have focus. This will submit the form, but it will not send the submit variable, which would mean the script we are using above will fail.

    Despite this flaw, there is an easy solution:

    Code:
    <input type='hidden' name='submit' />
    Here we are setting a hidden variable within our form, so no matter how the form is submitted, the submit variable will always be posted, this means there is no requirement to modify how your PHP works.


    I hope this helps,
    ILMV


    TODO:
    - Create demonstration script
    My Flickr Stream


    My Sites Blog Twitter Flickr

  2. #2
    PowerPoster
    Join Date
    Sep 2003
    Location
    Edmonton, AB, Canada
    Posts
    2,629

    Re: [PHP] Checking if a form has been submitted, the correct way...

    not to step on your toes, but I believe (and please, correct me if I'm wrong) that a better way of checking whether or not a form has been submitted is to check the request method.
    PHP Code:
    if($_SERVER['REQUEST_METHOD'] == "POST"

  3. #3

    Thread Starter
    Frenzied Member I_Love_My_Vans's Avatar
    Join Date
    Jan 2005
    Location
    In the PHP compiler
    Posts
    1,275

    Re: [PHP] Checking if a form has been submitted, the correct way...

    Blast , never realised that one existed.

    It still demonstrates that my initial method is the incorrect way of checking if a form has been submitted, changing it to the way you suggest would fix this problem.

    Many thanks Kows!
    My Flickr Stream


    My Sites Blog Twitter Flickr

  4. #4
    Addicted Member
    Join Date
    Mar 2007
    Location
    India
    Posts
    177

    Re: [PHP] Checking if a form has been submitted, the correct way...

    Thanks both of you for such a simple solution.

  5. #5
    New Member
    Join Date
    Aug 2011
    Posts
    13

    Re: [PHP] Checking if a form has been submitted, the correct way...

    agree)) simple and quick solution..good job guys!! personally i've never done it on my own

  6. #6
    New Member
    Join Date
    Nov 2012
    Posts
    2

    Re: [PHP] Checking if a form has been submitted, the correct way...

    Quote Originally Posted by kows View Post
    not to step on your toes, but I believe (and please, correct me if I'm wrong) that a better way of checking whether or not a form has been submitted is to check the request method.
    PHP Code:
    if($_SERVER['REQUEST_METHOD'] == "POST"
    This won't work if the form submitted uses the GET method. The best way, unfortunately, is to add what I_Love_My_Vans suggested, add a <input type='hidden' name='submit' /> to EVERY form page. Kind of sucks, but I don't think there's a better way yet

  7. #7
    Web developer Nightwalker83's Avatar
    Join Date
    Dec 2001
    Location
    Adelaide, Australia
    Posts
    12,482

    Re: [PHP] Checking if a form has been submitted, the correct way...

    Quote Originally Posted by charles254 View Post
    This won't work if the form submitted uses the GET method. The best way, unfortunately, is to add what I_Love_My_Vans suggested, add a <input type='hidden' name='submit' /> to EVERY form page. Kind of sucks, but I don't think there's a better way yet
    Well, using the Get method is the incorrect way of doing things and it is not very secure.
    If this thread is finished with please mark it "Resolved" by selecting "Mark thread resolved" from the "Thread tools" drop-down menu.
    Please consider giving me some rep points if I help you a lot.
    Links to my code examples can now be found on my website: My websites
    Please rate my post if you find it helpful!
    Technology is a dangerous thing in the hands of an idiot! I am that idiot.

  8. #8
    New Member
    Join Date
    Nov 2012
    Posts
    2

    Re: [PHP] Checking if a form has been submitted, the correct way...

    Quote Originally Posted by Nightwalker83 View Post
    Well, using the Get method is the incorrect way of doing things and it is not very secure.
    "incorrect way of doing things". Not to get into a philosophical battle but it really depends on what you're doing. If you're filling out a form to fetch a result set from a db, you would/should be using GET over POST and the if($_SERVER['REQUEST_METHOD'] == "POST") would not work for all ways a form can be submitted. The hidden field method would cover all cases.

  9. #9
    New Member
    Join Date
    Dec 2012
    Posts
    1

    Resolved Re: [PHP] Checking if a form has been submitted, the correct way...

    I find that $_SERVER['REQUEST_METHOD'] is sometimes set to GET or POST even when there has been no form submitted for that particular page, so I wouldn't advise using that method.
    Last edited by kkhugs; Dec 29th, 2012 at 06:57 PM.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Featured


Click Here to Expand Forum to Full Width

Survey posted by VBForums.