Home
 

Customer Support

Search for keywords:

Browse by category:

What is CAPTCHA? How can I use it?

What is Captcha?
In a CAPTCHA test (an acronym for "Completely Automated Public Turing test to tell Computers and Humans Apart," also sometimes spelled in lowercase), an image of letters is dynamically generated. The letters, because they're part of an image and not text (e.g. text that you could cut and paste), are difficult for a spambot or other computer program to read. Yet, a person has little trouble reading the letters in a captcha image.

Using a captcha test on a website is a great way to ensure, for instance, that a person and not a spambot is filling out a web form. Also, a captcha can make it difficult for a person to continuously resubmit form information and overwhelm the form's purpose.

The new and improved Recaptcha is like captcha, but accessible to the blind and involves its users in a public effort to digitze old books and periodicals. Learn more here.

For users who have a solid grounding in PHP and how HTML forms work, this example will show how to implement a captcha test:

  1. Enable the GD extention in your site's PHP settings by logging into OnSite. Once you are logged in go to the PHP Configurator which is under the Other Tools heading. Within the PHP Configurator click on the Extensions link on the left hand side of the page. You will now see a heading for Graphics, make sure the checkbox for the GD extention is checked. Now click on the Save Changes button near the top of the page.


  2. Download (in Firefox, right-click and choose "Save link as..." or in Internet Explorer, right-click and choose "Save target as...") this captcha-gen.php PHP script and place it in the same directory as your form.


  3. Add the following image and text input to your form:
    <img src="captcha-gen.php" width="200" height="80"> <br />
    Captcha Text: <input type="text" name="phrase">


  4. Inside the action script of your form, make sure to call session_start(); and add the following check before you process the form information.
    <?php

    if( isset($_REQUEST['phrase']) &&
        isset($_SESSION['phrase']) &&
        strlen($_REQUEST['phrase']) > 0 &&
        strlen($_SESSION['phrase']) > 0 )
    {

      if( $_REQUEST['phrase'] == $_SESSION['phrase'] )
      {

       //This is where you will process the form input.

       //This will prevent the form from being
       //resubmitted multiple times.
       unset($_SESSION['phrase']);
      }
      else
      {

         //This is where you want to process
         // a bad guess at the Captcha phrase.

         print( "I'm sorry the Captcha phrase was incorrect!" );
      }

    }
    else
    {

      //This is where you want to process
      // a direct request or a re-submision
      // after the phrase was removed from
      // the session.

      print( "You must pass the Captcha test to use this form!" );

    }

    ?>


Make sure that all three of the above files are in the same directory and it should work.

The above method uses a PEAR module to create the captcha image. You can either look at the source code of captcha-gen.php or look at the Test_CAPTCHA site http://pear.php.net/package/Text_CAPTCHA/docs to learn more. The site also has another example of how to implement a captcha test.

You can read more about the CAPTCHA project here: Captcha.net

These scripts below can be easily implemented in your own system as well:
Freecap
SecureImage

User-Contributed Notes

add a note
There are no user-contributed notes for this topic.

Related Questions:


How do I set PHP include_path?

How do I change timezone for PHP?

What PHP modules are available and how do I load them?

Can I run a PHP script on cron?

How do I do html form file uploads?

Why does a PHP function give an error that it is undefined?

Why does my PHP script throw an Internal Server Error 500?

Why does PHP HTTP authentication not work?

What version of PHP are you running and can I see a phpinfo()?

I can't upload a file larger than 8MB through a PHP script

Can you change session cookie timeout in php.ini for me?

Do you have a quick form mail script?

Where is the php_error_log?

Can I use a PHP extension like PDFlib that I have personally purchased a license to use?

How do I get different character sets within my PHP page to display correctly?

What's the difference between running PHP as a cgi or as a module in safe mode?

Do you offer PHP5 with MySQLi?

Can I have all .html pages parsed as PHP?

My PHP session is lost whenever I go to a secure URL using the shared SSL certificate.

The PHP curl module doesn't work.

Where can I download free PHP scripts?

Do you provide PEAR?

Do I need to set any 777 permissions in order for my PHP scripts to create files and directories?

How do I execute my .php files as PHP 5?

How do I use the url_rewriter.tags setting for PHP?

The PDFlib extension gives a UPR description error.

Can I use Smarty Templates?

Why does flush() not flush the data to my browser?

Why does PHPLIB sessions give me a MySQL Database error?

Will IonCube encoded files work?

Will my Zend Encoded files work?

The pfpro pfpro_process() function keeps giving me Error 31

I need the virtual() function and it is not available.

Why does getallheaders() say undefined function?

Can I talk over SSL when opening an IMAP connection with the PHP imap_open() function?

How do I configure PHP?

How can one PHP file transparently handle all search-engine friendly URLs?

How do I put PHP sessions into a database instead of the default files-based method?

My PHP script needs a newer version of Zend Optimizer. What do I do?

I need to execute my cron job with PHP5.2

I need a newer version of PHP to run certain software

Can I use the pfpro extension in PHP 5.2?

Browse Categories:

Getting Started, FTP, Telnet/SSH, Moving Domains, E-mail, Traffic Reports, Mailing Lists, Apache, PHP, CGI, Other Server-Side Scripting, MySQL Database, Imaging Libraries, Other Software, Billing & Terms, Control Panel, E-commerce, Pre-Sales


Modwest PHP Hosting      Copyright 2000-2009 by Modwest, Inc.      About    |    Blog    |    Community    |    Design    |    Jobs    |    Contact