Click here to Skip to main content
15,881,380 members
Articles / Programming Languages / Javascript

Implementation of Captcha in Javascript

Rate me:
Please Sign up or sign in to vote.
1.44/5 (12 votes)
8 Oct 2009CPOL2 min read 162.9K   6   12
Generating Captcha using javascript for websites
1.JPG

Introduction

This Particular article helps you in implementing Captcha in you webpage / website or in an application. Helps you in understanding and logical implentation of captcha on entirely client side.

Most of the websites use the technique of captcha for validation / verification purpose whenever someone tries accomplish membership or want to submit a piece of information. The generation of captcha can be done in various ways. We can use server side scripting or even we can use client side scripting.

Background

In most of the cases some times it happens that we need to have some additional resources / dlls to be registered on the hosting server in order to implement the captcha basically this happens in case of server side scripting.Here I have implemented the Captcha functionality purely on the client side using javascript.

Using the code

Generating Captcha using client side scripting is quite a simple but make sure that the javascript is enabled. Ya now a days almost all of the browsers supports the javascript. Anyways lets move towards the code details. the source code is quite simple and straight forwad. Just copy and paste the below mentioned code in blank html page and save it as whatever you like. download / copy an image and put in under same folder or at same location where the HTML file is created.

Source Code

<html>
<head>
<title>Captcha</title>
    
    <script type="text/javascript">

   //Created / Generates the captcha function    
    function DrawCaptcha()
    {
        var a = Math.ceil(Math.random() * 10)+ '';
        var b = Math.ceil(Math.random() * 10)+ '';       
        var c = Math.ceil(Math.random() * 10)+ '';  
        var d = Math.ceil(Math.random() * 10)+ '';  
        var e = Math.ceil(Math.random() * 10)+ '';  
        var f = Math.ceil(Math.random() * 10)+ '';  
        var g = Math.ceil(Math.random() * 10)+ '';  
        var code = a + ' ' + b + ' ' + ' ' + c + ' ' + d + ' ' + e + ' '+ f + ' ' + g;
        document.getElementById("txtCaptcha").value = code
    }

    // Validate the Entered input aganist the generated security code function   
    function ValidCaptcha(){
        var str1 = removeSpaces(document.getElementById('txtCaptcha').value);
        var str2 = removeSpaces(document.getElementById('txtInput').value);
        if (str1 == str2) return true;        
        return false;
        
    }

    // Remove the spaces from the entered and generated code
    function removeSpaces(string)
    {
        return string.split(' ').join('');
    }
    
 
    </script>
    
    
    
</head>
<body onload="DrawCaptcha();">
<table>
<tr>
    <td>
        Welcome To Captcha<br />
    </td>
</tr>
<tr>
    <td>
        <input type="text" id="txtCaptcha" 
            style="background-image:url(1.jpg); text-align:center; border:none;
            font-weight:bold; font-family:Modern" />
        <input type="button" id="btnrefresh" value="Refresh" onclick="DrawCaptcha();" />
    </td>
</tr>
<tr>
    <td>
        <input type="text" id="txtInput"/>    
    </td>
</tr>
<tr>
    <td>
        <input id="Button1" type="button" value="Check" onclick="alert(ValidCaptcha());"/>
    </td>
</tr>
</table>
</body>
</html>

How does it works...

<input id="Button1" type="button" value="Check" onclick="alert(ValidCaptcha());"/>

Onclick Event of button we are invoking the ValidCaptcha() method. Which in turns returns an boolean value i.e. True/False.

ValidCaptcha() Method compare's the entered code in the text box aganist the drawn or displayed code in the captcha box. RemoveSpaces(string) Method repoves the occurance of any blank spaces within the created as well as entered code. After all the both the strings are compared by removing any blank spaces.

Based on the return value fron ValidCaptcha the result is displayed as either 'True' or 'False'. you can customize the return value to any user friendly message instead of true or false.

<input type="button" id="btnrefresh" value="Refresh" onclick="DrawCaptcha();" />

DrawCaptcha() Method is invoked to draw an captcha on the screen. On Click of refresh button we can generate/draw the new captcha images.

<body onload="DrawCaptcha();">

On body load I am calling DrawCaptcha() method so that whenever the page is loaded the default captcha should be drawn.

Here we go, Save the HTML page and open in the web browser (IE/FF etc). Happy Coding........:)

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Technical Lead Persistent Systems
India India
Working as Project Lead in Persistent Systems, CMMI level 5 company. http://www.Persistent.co.in

Comments and Discussions

 
QuestionInsensitivity to uppercase and lowercase letters Pin
Member 116860051-Sep-15 0:40
Member 116860051-Sep-15 0:40 
GeneralMy vote of 1 Pin
_JohnDoe22-Jun-14 1:08
_JohnDoe22-Jun-14 1:08 
GeneralMy vote of 1 Pin
Joshua Walsh15-Jun-14 15:49
Joshua Walsh15-Jun-14 15:49 
GeneralMy vote of 2 Pin
anamicaa23-Mar-14 19:53
anamicaa23-Mar-14 19:53 
GeneralMy vote of 3 Pin
Member 1059688321-Feb-14 21:23
Member 1059688321-Feb-14 21:23 
GeneralMy vote of 1 Pin
Thomas Daniels27-Jan-13 0:32
mentorThomas Daniels27-Jan-13 0:32 
General[My vote of 1] Negative value Pin
Sergey Alexandrovich Kryukov3-Nov-09 18:36
mvaSergey Alexandrovich Kryukov3-Nov-09 18:36 
GeneralMy vote of 1 Pin
morsanu8-Oct-09 4:48
morsanu8-Oct-09 4:48 
GeneralMy vote of 1 Pin
SmirkinGherkin8-Oct-09 4:28
SmirkinGherkin8-Oct-09 4:28 
General[My vote of 2] My vote of 2 as well... Pin
kaschimer8-Oct-09 3:53
kaschimer8-Oct-09 3:53 
GeneralTechnically poor; very easy to break Pin
jimbobmcgee8-Oct-09 3:43
jimbobmcgee8-Oct-09 3:43 
GeneralMy vote of 2 Pin
jimbobmcgee8-Oct-09 3:32
jimbobmcgee8-Oct-09 3:32 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.