calcOps = array("+", "-", "*"); } function generateAndUseCaptcha() { $rndType = rand(1, 100); if ($rndType > 0) { // build numeric question $useOp = $this->calcOps[rand(0, 2)]; $firstNum = 0; $secondNum = 0; if ($useOp == "*") { $firstNum = rand(0, 9); $secondNum = rand(0, 15); } else { $firstNum = rand(0, 100); $secondNum = rand(0, 100); } $calc = 0; if ($useOp == "+") { $calc = $firstNum + $secondNum; } else if ($useOp == "-") { $calc = $firstNum - $secondNum; } else if ($useOp == "*") { $calc = $firstNum * $secondNum; } $mathStr = "" . $firstNum . " " . $useOp . " " . $secondNum; $_SESSION['CAPTCHA_QUESTION'] = $mathStr; $_SESSION['CAPTCHA_VALUE'] = $calc; // field name $fieldname = chr(rand(65, 90)) . dechex(rand()); $_SESSION['CAPTCHA_FIELD'] = $fieldname; return $mathStr; } else { // use pooled question // TODO currently not supported due to missing logic which language to use } } function validateCaptcha($inputStr) { if (empty($inputStr) == true) { return false; } if (isset($_SESSION['CAPTCHA_VALUE']) == false) { return false; } $valueInSession = $_SESSION['CAPTCHA_VALUE']; return ($inputStr == $valueInSession . ""); } }