Skip to content

A PHP library for generating random, accessible arithmetic and logic questions

License

Notifications You must be signed in to change notification settings

theodorejb/Responsive-Captcha

Repository files navigation

Responsive Captcha

Packagist Version

Prevent form spam by generating random, accessible arithmetic and logic questions.

Examples:

  • "What is the fourth letter in snowboard?"
  • "What is the sum of four and six?"
  • "What is eight multiplied by two?"
  • "Which is smallest: sixty-six, one hundred, or twenty-two?"

Users can respond with either the numeric or textual version of an answer (e.g. "16" or "sixteen").

For background info on this project, see my blog post: https://theodorejb.me/2012/12/30/responsive-captcha/

Install via Composer

composer require theodorejb/responsive-captcha

Usage

  1. Generate a random question:

    use function theodorejb\ResponsiveCaptcha\{randomQuestion, checkAnswer};
    
    $qa = randomQuestion();
    $realAnswer = $qa->getAnswer(); // save somewhere (e.g. in session or encrypted single-use token)
  2. Display question in form:

    <label>
        <?= $qa->getQuestion() ?>
        <input type="text" name="captcha" />
    </label>
  3. Check whether the user's response is correct:

    $answer = filter_input(INPUT_POST, "captcha");
    
    if ($answer !== null) {
        if (checkAnswer($answer, $realAnswer)) {
            // code to execute if the captcha answer is correct
        } else {
            // the answer is incorrect - show an error to the user
        }
    }

About

A PHP library for generating random, accessible arithmetic and logic questions

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages