PHP Form Submission: Recognize Image Input Buttons

By  on  

As you probably know, you can recognize a form submission from a "submit" input type by placing the following code in the "processing" PHP script:

if(isset($_POST['submit'])) { /* do stuff */ }

Did you know, however, that when using an "image" input type to submit the form, the above wont work? You need to add a "_x" to the field name in PHP:

if(isset($_POST['submit_x'])) { /* do stuff */ }

Odd, huh? This works the same when using a form "GET" method.

Recent Features

  • By
    6 Things You Didn’t Know About Firefox OS

    Firefox OS is all over the tech news and for good reason:  Mozilla's finally given web developers the platform that they need to create apps the way they've been creating them for years -- with CSS, HTML, and JavaScript.  Firefox OS has been rapidly improving...

  • By
    JavaScript Promise API

    While synchronous code is easier to follow and debug, async is generally better for performance and flexibility. Why "hold up the show" when you can trigger numerous requests at once and then handle them when each is ready?  Promises are becoming a big part of the JavaScript world...

Incredible Demos

  • By
    5 More HTML5 APIs You Didn’t Know Existed

    The HTML5 revolution has provided us some awesome JavaScript and HTML APIs.  Some are APIs we knew we've needed for years, others are cutting edge mobile and desktop helpers.  Regardless of API strength or purpose, anything to help us better do our job is a...

  • By
    Dynamically Load Stylesheets Using MooTools 1.2

    Theming has become a big part of the Web 2.0 revolution. Luckily, so too has a higher regard for semantics and CSS standards. If you build your pages using good XHTML code, changing a CSS file can make your website look completely different.

Discussion

  1. The _x and _y represent the coordinate location you clicked the image at.

  2. Think this is only an issue with IE.

  3. Yeah. The _x- and _y-coordinates are great for improving the security of a form! I’ve used this to determine if the form has been filled by a human. A spam-bot won’t submit any coordinates but a human has to click on the button and so there will always be coordinates (you’ll have to deactive submitting with the ENTER-button).

  4. @Matthias: Good point on the security enhancement — I’ve never though of that!

  5. Braxo

    @ Matthias

    Thanks for posting your comment. I think telling the user that the ENTER button has been deactivated for bot protection is easier than having the user type in a captcha.

    I’ll definitely be looking into that method and most likely incorporating it into my projects.

  6. @Braxo – Wait – “Enter button” is deactivated? How would this affect someone who cannot use a mouse/relies on accessibility tools to fill out forms and the like?

    Some sites cannot get away with it (coughtargetcough).

  7. You can save yourself the trouble and just give the input a name attribute and check for that. Saves from changing code in two places (the input and the PHP submit validation).

    <input type="image" src="image.png" name="submitted" value="Submit" />

  8. I should clarify that…

    It saves from changing code in 2 places should you want to change to/from an image submit or a standard submit.

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!