[forms] How to prevent robots from automatically filling up a form?

I'm thinking of many things here:

  1. using JS (although you don't want it) to track mouse move, key press, mouse click
  2. getting the referral url (which in this case should be one from the same domain) ... the normal user must navigate through the website before reaching the contact form: PHP: How to get referrer URL?
  3. using a $_SESSION variable to acquire the IP and check the form submit against that list of IPs
  4. Fill in one text field with some dummy text that you can check on server side if it had been overwritten
  5. Check the browser version: http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php.html ... It's clear that a bot won't use a browser but just a script.
  6. Use AJAX to send the fields one by one and check the difference in time between submissions
  7. Use a fake page before/after the form, just to send another input