If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

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.

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")

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

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

Originally Posted by charles254

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.

when you quote a post could you please do it via the "Reply With Quote" button or if it multiple post click the "''+" button then "Reply With Quote" button.
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.
Please rate my post if you find it helpful!
Technology is a dangerous thing in the hands of an idiot! I am that idiot.

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

Originally Posted by Nightwalker83

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.

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

Originally Posted by I_Love_My_Vans

PHP Code:

if(isset($_POST['submit']))

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.

@love_vans
As I am new to web development, I think i need little more explanation. Your above-mentioned text I made it bold, is little not picking to my mind. If you please little explain it to me so I would grasp it properly. That why this way is not working everywhere.

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 need little more explanation on this hidden field too. I found this code in so many code snippets even in books. But non of them could explain it that how thing actually works.