The most common solution to keep 'machines/automated spammers' from abusing PHP forms is to use a CAPTCHA. This works, for the most part, but is very inconvenient & usually unsightly for the visitor, discouraging them from actually using the form for its intended purpose.
The solution we've come up with is much simpler than other proposed solutions we've run across. We hope you find it helpful.
Here's how it works: (view demo · source · download)
The only downside we can think of is that the form won't work unless the visitor has Javascript enabled, but typically over 95% of visitors to your site will have Javascript enabled.
UPDATE: (4/10) - Looks like someone else had a similar idea first: http://15daysofjquery.com/examples/contact-forms
"Thanks, Andy. I've made some changes to the code based on your suggestion."
"it will not work if you have same form in several tabs. if you submit on first, other tabs generate error after sending. try it"
"hello,
for some reason i get this PHP error
"Undefined index: confirm"
any clues?"