mathCaptcha – Really simple captcha
Sometimes captchas are way too complicated. Just in mind I have the one from rapidshare and the cats…Impossible!
What I’m showing up today is a really simple captcha. With a bit of security of course.
Script Name: mathCaptcha
Version: 0.1
License: GPL v3
Screenshot:

Installation:
Just download the .zip file , uncompress in your htdoc and try ;)
Support: forum.neo22s.com
Usage:
We have 2 functions in the file mathCaptcha.php
The first one is used to obfuscate the result of the captcha since is not an image, this makes a bit more difficult for the bots to read the result.
function encode_str ($input)//converts the input into Ascii HTML { for ($i = 0; $i < strlen($input); $i++) { $output .= "&#".ord($input[$i]).';'; } return $output; }
Then we have the function that generates the math and stores it in a session (remember to have at the beginning of the page).
Right now I only add as an operator +, but you can use the one you want just changing the code, also the numbers for the operation can be changed in the mt_rand
session_start(); function mathCaptcha(){//generates a captcha for the form $first_number=mt_rand(1, 94);//first operation number $second_number=mt_rand(1, 5);//second operation number $_SESSION["mathCaptcha"]=($first_number+$second_number);//operation result $operation=" <b>".encode_str($first_number ." + ". $second_number)."</b>?";//operation codifieds echo "How much is:".$operation; }
Then to display the captcha and add the input to write in, it is really simple (using 1 form):
<form action="" method="post"> < ?php mathCaptcha();?> <input id="math" maxlength="2" name="math" size="2" type="text" onkeypress="return isNumberKey(event);" /> <input type="submit" value="Go!" /> </form>
This would display the captcha and one input to write the numbers in.
As you can see I used one JavaScript function just to control that they write numbers in the input, is something really stupid but I think is user friendly:
function isNumberKey(evt){ var charCode = (evt.which) ? evt.which : event.keyCode; if((charCode==46||charCode==8||charCode==45||charCode==47) ||(charCode >= 48 && charCode < = 57) ){ return true; } else { return false; } }
Once the form is submited we need to check if they are humans, to do this we can use something like:
if ($_POST){//if there's post action if($_POST["math"] == $_SESSION["mathCaptcha"]) {//correct it seems human echo "<strong>Great Einstein!</strong> your answer is the good one.<br /><br />"; } else echo "<strong>Wrong!</strong> I think you missed some school lessons, try another time.<br /><br />"; }
And that's all folks.
Notes:
It is important to have the proper charset. BTW uses PHP if was not clear xD
- Cache Class for PHP
- Concatenate PDF in PHP
- neoMobile - HTML Template for mobile browser
- Generating a unique Key
- Count Words Repetitions in PHP
Help sharing and Flatter me ;)
