Login   Register  
PHP Classes
elePHPant
Icontem

File: index.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Josh Storz  >  Animated CAPTCHA  >  index.php  >  Download  
File: index.php
Role: Example script
Content type: text/plain
Description: Main Function - Displays picture & sets session
Class: Animated CAPTCHA
CAPTCHA validation using animated math expressions
Author: By
Last change:
Date: 2007-06-08 16:04
Size: 4,024 bytes
 

Contents

Class file image Download
<?php
session_start
();

/*
This Animated Gif Captcha system is brought to you courtesy of ...
josh@betteradv.com                                    ==> Josh Storz
http://www.querythe.net/Animated-Gif-Captcha/         ==> Download Current Version

OOP (PHP 4 & 5) Interface by ...
krakjoe@krakjoe.info                                  ==> J Watkins

The GIFEncoder class was written by ...
http://gifs.hu                                        ==>  László Zsidi
http://www.phpclasses.org/browse/package/3163.html    ==>  Download Current Version 

This file is part of QueryThe.Net's AnimatedCaptcha Package.

    QueryThe.Net's AnimatedCaptcha is free software; you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation; either version 2.1 of the License, or
    (at your option) any later version.

    QueryThe.Net's AnimatedCaptcha is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with QueryThe.Net's AnimatedCaptcha; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */

include "GIFEncoder.class.php";

// get random numbers & operator and make sure the answer is >= 0
$k ;
while(
$k == 0)
  {
    
$rand1 rand(19);  // 1st number (1-9)
    
$rand3 rand(19);  // 2nd number (1-9)
    
$rand2 rand(02);  // operator (-,+,*)
    
    
if (($rand2 != 0) || ($rand3 $rand1)) 
      {
        
$k ;
      }
  }

// set sessions for numbers, operator & answer.  Only $_SESSION['answer'] is necessary.  Others are for displaying full equation if you desire.
    
$_SESSION['r1'] = $rand1 ;
    
$_SESSION['r3'] = $rand3 ;
    
    if (
$rand2 == 0)      {$_SESSION['r2'] = " - " $_SESSION['answer'] = $rand1 $rand3 ;}
    elseif (
$rand2 == 1)  {$_SESSION['r2'] = " + " $_SESSION['answer'] = $rand1 $rand3 ;}
    else                  {
$_SESSION['r2'] = " * " $_SESSION['answer'] = $rand1 $rand3 ;}

// build the frame images and elapsed time to show in 2 arrays
    
$frames [ ] = "frames/solve.gif" ;  // Intro message " Prove you are human ... "
    
$time [ ] = 260;  
    
  
// random number & elapsed time of frames to *hopefully* make a cracker's life tougher
    
$i 0;
    
$loop rand(020);  // total number of frames in loop loop
    
    
while ($i $loop)
      {
        
$frames [ ] = "frames/solve.gif"// use the solve frame so that the human eye cannot see a flicker
        
$time [ ] = rand(05); // 5 * 20 = 1 second so the delay is never too terribly long
        
$i ++ ;
      }
          
  
// set 1st random number 
    
$frames [ ] = "frames/" .$rand1".gif";  // 1st number (0-9)
    
$time [ ] = 140;
    
  
// set frame for operator
    
if ($rand2 == 0)      {$frames [ ] = "frames/minus.gif";}
    elseif (
$rand2 == 1)  {$frames [ ] = "frames/plus.gif";}
    else                  {
$frames [ ] = "frames/times.gif";}
    
$time [ ] = 140;
    
  
// set 2nd random number
    
$frames [ ] = "frames/" .$rand3".gif";  // 2nd number (0-9)
    
$time [ ] = 140;

    
  
// set final frame for equals
    
$frames [ ] = "frames/equals.gif" // Ending message " equals    = "
    
$time [ ] = 280;  // equals frame time (100 = 1 second)

// encode the gif using the class to avoid gd dependencies
    
$gif = new GIFEncoder    (
                                
$frames// frames array
                                
$time// elapsed time array
                                
0// loops (0 = infinite)
                                
2// disposal
                                
000// rgb of transparency
                                
"url" // source type
            
);

// display the image
Header 'Content-type:image/gif' );
echo    
$gif->GetAnimation ( );

?>