Miscellaneous
  Home arrow Miscellaneous arrow Page 4 - Creating a CAPTCHA with PHP
Moblin
Try It Free
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  
Forums Sitemap 
Dedicated Servers  
Download TestComplete 
JMSL Numerical Library 
IBM® developerWorks
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 / 43
    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
     
    Try It Free
     
    ADVERTISEMENT

    Get inside! Sample the range of functionality easily built with JMSL Library for Time Series Data Analysis, Heat Maps, Portfolio Optimization, Monte Carlo Simulation, Stock Price Charting and more. Download Now!

    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...
     

    MISCELLANEOUS ARTICLES

    - Stopping CSRF Attacks in Your PHP Applicatio...
    - Quick and Dirty AJAX Tutorial
    - Flickr Puzzle Mashup
    - The PAVISE of Security
    - Creating a CAPTCHA with PHP
    - Sending SMS Thru HTTP
    - The Postal Fix - Part 2
    - Adding Mail with Exim
    - The Postal Fix - Part 1
    - Create Your Own Custom API
    - Adding Drop Shadows with PHP
    - Writing a Basic Authentication System in PHP
    - Overlapping Images with GD
    - Using Sockets in PHP
    - Dynamic CSS with PHP






    © 2003-2008 by Developer Shed. All rights reserved. DS Cluster 6 hosted by Hostway