验证码的替代品

I'm looking at adding a bit of security to a form to avoid spammers and bots.

I know I can add a captcha, but I really don't like these as they look clunky.

I've seen other places that have things such as What is 2 + 2? and What colour is an orange?

Is there a bundle / library / example of implementing a question-based 'captcha'?

Other way you can do like:

  1. When form is getting open, then generate some long token key
  2. Store this long token key on one table as well.
  3. After submitting the form, check for the token key, if exists, then insert and remove that token key from table as well.
  4. If token key not found on table, then ignore insertion of data.