Miscellaneous
  Home arrow Miscellaneous arrow Page 4 - Creating a CAPTCHA with PHP
Codewalker Forums 
  Tutorials  
Database Articles  
Miscellaneous  
Navigation Usability  
PEAR Articles  
Programming Basics  
Server Administration  
XML Tutorials  
  Reviews  
Database Book Reviews  
Linux Book Reviews  
Miscellaneous Reviews  
PHP Book Reviews  
PHP Software Reviews  
Server Admin Reviews  
SQL Tool Reviews  
  Code Gallery  
Content Management Code  
Contest Code  
Counters Code  
Database Code  
Date Time Code  
Discussion Board Code  
Email Code  
File Manipulation Code  
GUI Code  
Link Farm Code  
Miscellaneous Code  
Search Code  
Site Navigation Code  
User Management Code  
Mobile Linux 
App Generation ROI 
IBM® developerWorks 
Download TestComplete 
Forums Sitemap 
Weekly Newsletter 
 
Developer Updates  
Free Website Content 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us Get Paid 
Request Media Kit
Contact Us 
Site Map 
Privacy Policy 
Support 
 USERNAME
 
 PASSWORD
 
 
  >>> SIGN UP!  
  Lost Password? 
MISCELLANEOUS

Creating a CAPTCHA with PHP
By: Andrew Walsh
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 4 stars4 stars4 stars4 stars4 stars / 78
    2006-06-06

    Table of Contents:
  • Creating a CAPTCHA with PHP
  • How does a CAPTCHA work?
  • Creating the random text
  • Writing the text to the image
  • Check if the user entered the code correctly
  • Improvements and Conclusion

  • Rate this Article: Poor Best 
      ADD THIS ARTICLE TO:
      Del.ici.ous Digg
      Blink Simpy
      Google Spurl
      Y! MyWeb Furl
    Email Me Similar Content When Posted
    Add Developer Shed Article Feed To Your Site
    Email Article To Friend
    Print Version Of Article
    PDF Version Of Article
     
     
    ADVERTISEMENT


    Creating a CAPTCHA with PHP - Writing the text to the image


    (Page 4 of 6 )

    Now that we have the text to write we actually need to write it to the image and display it to the user. This is made fairly easy with GD.

    <?php
    /*
    Now for the GD stuff, for ease of use lets create
     the image from a background image.
    */

    $captcha imagecreatefrompng("./captcha.png");

    /*
    Lets set the colours, the colour $line is used to generate lines.
     Using a blue misty colours. The colour codes are in RGB
    */

    $black imagecolorallocate($captcha000);
    $line imagecolorallocate($captcha,233,239,239);

    /*
    Now to make it a little bit harder for any bots to break, 
    assuming they can break it so far. Lets add some lines
    in (static lines) to attempt to make the bots life a little harder
    */
    imageline($captcha,0,0,39,29,$line);
    imageline($captcha,40,0,64,29,$line);
    ?>

    As you can see from the code above we are loading the basic image from CAPTCHA.png instead of building the image itself which could be a little complex for this basic tutorial. When we use colour in GD we need to allocate the colour to a variable, we do this with imagecolorallocate(). Once we have the colours stored inside of the respected variables we then use them to draw the lines through the image. This is to make the robots job of cracking the captcha just that little bit harder, because we are nice to the robots like that :)

    Finally we have to write the text to the image which is made easy with imagestring() . The only thing left to do on this image is to output it which is done by setting the content type of the page to image/png with header() and outputting the image to the browser with imagepng(). It is also worth mentioning that the string is encrypted and stored in the session variable $_SESSION['key']

    <?php
    /*
    Now for the all important writing of the randomly generated string to the image.
    */
    imagestring($captcha52010$string$black);


    /*
    Encrypt and store the key inside of a session
    */

    $_SESSION['key'] = md5($string);

    /*
    Output the image
    */
    header("Content-type: image/png");
    imagepng($captcha);
    ?>

    More Miscellaneous Articles
    More By Andrew Walsh


       · The Text: As you can see from the code above we are loading the basic image from...
       · Ok it will be corrected soon
       · My bad...I fixed this yesterday...
       · I have been meaning to get a Captcha image installed on my little application. As...
       · Can i use this code to play around and use it in a wordpress (http://wordpress.org)...
       · Problem to use in Post nukewhen i impliment the captcha on post nuke web then i...
       · You can do what you like with it, although i thought wordpress included a much...
       · By changing this line:$string = substr($md5,0,5);With the following gives you...
       · By changing this line:$string = substr($md5,0,5);With the following gives you...
       · I get a problem that dont show the picture it shows alot of strange text...
       · &lt;?php//Start the session so we can store what the code actually...
       · This was the base of the new captcha I made, except I did things a little...
       · please add this to the headers partheader(&quot;Cache-Control: no-cache,...
       · All goes well on a new page but I get this message when I incorporate it in an...
       · I get the same error when I don't start the session above the <html> tags,...
       · The site http://www.trycaptcha.com lets you try a bunch of open source CAPTCHA...
       · This tutorial really helped me out, thanks for the source!
       · Thanks for helpful little tutorial on how to do CAPTCHA! Never had to think about it...
       · The code would be great at prevent bots, but it has a critical flaw that would let...
       · please give me captcha work
       · You can this code to wordpresss also
       · I like the way you used the md5 for the random text. Much easier than how I was...
     

    MISCELLANEOUS ARTICLES

    - Using PHP to Stream MP3 Files and Prevent Il...
    - 10 Must Have Firefox Improvements
    - All About OpenOffice 3.0
    - Shell Script Writing
    - Loops in the UNIX Shell
    - The Test in the UNIX Shell
    - Data Streams and the UNIX Shell
    - Control Mechanisms of the UNIX Shell
    - Variables Within the UNIX Shell
    - The Shell and UNIX
    - In Detail: UNIX File Systems
    - Rights Management in UNIX
    - UNIX File Systems
    - The Terminal in UNIX
    - Operating Systems and UNIX





    © 2003-2009 by Developer Shed. All rights reserved. DS Cluster 4 Hosted by Hostway
    Stay green...Green IT