Captcha, or Human Verification, Systems
Captcha stands for Completely Automated Public Turing test to tell Computers and Humans Apart, a bit of a mouthful I know. Unfortunately I am still yet to find one that completely stops form trolls from trying to get through but I have found that "ReCaptcha" works pretty good. Google seems to think so too which is why its now hosted by them.
The idea is that some words get created using some back end sorcery and then displayed on your web page next to an input form. These image based words are easy (or are supposed to be anyways) to read if you are a human but not so easy and hopefully impossible by any automated process. The "human" reads the words and enters them in the form input and then upon submission, the back end process compares the input to what it knows the image to be. If it passes the test - the form gets processed, if not - then it bounces back or performs some other function that you plug in.
Like I said, not totally bullet proof but this is a good one. ReCaptcha does catch a very, very large percentage of attempted form bogusness and I use it for serious registration forms and the like. It is free financial but your users will pay by having to decode 2 words rather than one. I suppose I'd pay to afford my clients an easier solution but this works just fine.
There are some sophisticated processes for form spam that this will not combat, such as programs that queue hordes of captcha requests that flash in front of a remote screen where some poor minimum wager is doing nothing but solving these puzzles all day. To beat this you would need to be pretty creative. If you have a suggestion, leave me a comment.
To use "ReCaptca" in a php environment - follow the instructions on the page from the link above and feel better knowing you get to deal with less spam.