*CRLF fix. By Paradox.

--HG--
branch : trunk
This commit is contained in:
megamage
2008-12-21 19:08:56 -06:00
parent b32fc8f499
commit f91989cf64
15 changed files with 3154 additions and 3154 deletions
@@ -1,231 +1,231 @@
<?php
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFEncoder Version 2.0 by László Zsidi, http://gifs.hu
::
:: This class is a rewritten 'GifMerge.class.php' version.
::
:: Modification:
:: - Simplified and easy code,
:: - Ultra fast encoding,
:: - Built-in errors,
:: - Stable working
::
::
:: Updated at 2007. 02. 13. '00.05.AM'
::
*/
Class GIFEncoder {
var $GIF = "GIF89a"; /* GIF header 6 bytes */
var $VER = "GIFEncoder V2.06"; /* Encoder version */
var $BUF = Array ( );
var $LOP = 0;
var $DIS = 2;
var $COL = -1;
var $IMG = -1;
var $ERR = Array (
'ERR00' =>"Does not supported function for only one image!",
'ERR01' =>"Source is not a GIF image!",
'ERR02' =>"Unintelligible flag ",
'ERR03' =>"Could not make animation from animated GIF source",
);
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFEncoder...
::
*/
function GIFEncoder (
$GIF_src, $GIF_dly, $GIF_lop, $GIF_dis,
$GIF_red, $GIF_grn, $GIF_blu, $GIF_mod
) {
if ( ! is_array ( $GIF_src ) && ! is_array ( $GIF_tim ) ) {
printf ( "%s: %s", $this->VER, $this->ERR [ 'ERR00' ] );
exit ( 0 );
}
$this->LOP = ( $GIF_lop > -1 ) ? $GIF_lop : 0;
$this->DIS = ( $GIF_dis > -1 ) ? ( ( $GIF_dis < 3 ) ? $GIF_dis : 3 ) : 2;
$this->COL = ( $GIF_red > -1 && $GIF_grn > -1 && $GIF_blu > -1 ) ?
( $GIF_red | ( $GIF_grn << 8 ) | ( $GIF_blu << 16 ) ) : -1;
for ( $i = 0; $i < count ( $GIF_src ); $i++ ) {
if ( strToLower ( $GIF_mod ) == "url" ) {
$this->BUF [ ] = fread ( fopen ( $GIF_src [ $i ], "rb" ), filesize ( $GIF_src [ $i ] ) );
}
else if ( strToLower ( $GIF_mod ) == "bin" ) {
$this->BUF [ ] = $GIF_src [ $i ];
}
else {
printf ( "%s: %s ( %s )!", $this->VER, $this->ERR [ 'ERR02' ], $GIF_mod );
exit ( 0 );
}
if ( substr ( $this->BUF [ $i ], 0, 6 ) != "GIF87a" && substr ( $this->BUF [ $i ], 0, 6 ) != "GIF89a" ) {
printf ( "%s: %d %s", $this->VER, $i, $this->ERR [ 'ERR01' ] );
exit ( 0 );
}
for ( $j = ( 13 + 3 * ( 2 << ( ord ( $this->BUF [ $i ] { 10 } ) & 0x07 ) ) ), $k = TRUE; $k; $j++ ) {
switch ( $this->BUF [ $i ] { $j } ) {
case "!":
if ( ( substr ( $this->BUF [ $i ], ( $j + 3 ), 8 ) ) == "NETSCAPE" ) {
printf ( "%s: %s ( %s source )!", $this->VER, $this->ERR [ 'ERR03' ], ( $i + 1 ) );
exit ( 0 );
}
break;
case ";":
$k = FALSE;
break;
}
}
}
GIFEncoder::GIFAddHeader ( );
for ( $i = 0; $i < count ( $this->BUF ); $i++ ) {
GIFEncoder::GIFAddFrames ( $i, $GIF_dly [ $i ] );
}
GIFEncoder::GIFAddFooter ( );
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFAddHeader...
::
*/
function GIFAddHeader ( ) {
$cmap = 0;
if ( ord ( $this->BUF [ 0 ] { 10 } ) & 0x80 ) {
$cmap = 3 * ( 2 << ( ord ( $this->BUF [ 0 ] { 10 } ) & 0x07 ) );
$this->GIF .= substr ( $this->BUF [ 0 ], 6, 7 );
$this->GIF .= substr ( $this->BUF [ 0 ], 13, $cmap );
$this->GIF .= "!\377\13NETSCAPE2.0\3\1" . GIFEncoder::GIFWord ( $this->LOP ) . "\0";
}
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFAddFrames...
::
*/
function GIFAddFrames ( $i, $d ) {
$Locals_str = 13 + 3 * ( 2 << ( ord ( $this->BUF [ $i ] { 10 } ) & 0x07 ) );
$Locals_end = strlen ( $this->BUF [ $i ] ) - $Locals_str - 1;
$Locals_tmp = substr ( $this->BUF [ $i ], $Locals_str, $Locals_end );
$Global_len = 2 << ( ord ( $this->BUF [ 0 ] { 10 } ) & 0x07 );
$Locals_len = 2 << ( ord ( $this->BUF [ $i ] { 10 } ) & 0x07 );
$Global_rgb = substr ( $this->BUF [ 0 ], 13,
3 * ( 2 << ( ord ( $this->BUF [ 0 ] { 10 } ) & 0x07 ) ) );
$Locals_rgb = substr ( $this->BUF [ $i ], 13,
3 * ( 2 << ( ord ( $this->BUF [ $i ] { 10 } ) & 0x07 ) ) );
$Locals_ext = "!\xF9\x04" . chr ( ( $this->DIS << 2 ) + 0 ) .
chr ( ( $d >> 0 ) & 0xFF ) . chr ( ( $d >> 8 ) & 0xFF ) . "\x0\x0";
if ( $this->COL > -1 && ord ( $this->BUF [ $i ] { 10 } ) & 0x80 ) {
for ( $j = 0; $j < ( 2 << ( ord ( $this->BUF [ $i ] { 10 } ) & 0x07 ) ); $j++ ) {
if (
ord ( $Locals_rgb { 3 * $j + 0 } ) == ( $this->COL >> 0 ) & 0xFF &&
ord ( $Locals_rgb { 3 * $j + 1 } ) == ( $this->COL >> 8 ) & 0xFF &&
ord ( $Locals_rgb { 3 * $j + 2 } ) == ( $this->COL >> 16 ) & 0xFF
) {
$Locals_ext = "!\xF9\x04" . chr ( ( $this->DIS << 2 ) + 1 ) .
chr ( ( $d >> 0 ) & 0xFF ) . chr ( ( $d >> 8 ) & 0xFF ) . chr ( $j ) . "\x0";
break;
}
}
}
switch ( $Locals_tmp { 0 } ) {
case "!":
$Locals_img = substr ( $Locals_tmp, 8, 10 );
$Locals_tmp = substr ( $Locals_tmp, 18, strlen ( $Locals_tmp ) - 18 );
break;
case ",":
$Locals_img = substr ( $Locals_tmp, 0, 10 );
$Locals_tmp = substr ( $Locals_tmp, 10, strlen ( $Locals_tmp ) - 10 );
break;
}
if ( ord ( $this->BUF [ $i ] { 10 } ) & 0x80 && $this->IMG > -1 ) {
if ( $Global_len == $Locals_len ) {
if ( GIFEncoder::GIFBlockCompare ( $Global_rgb, $Locals_rgb, $Global_len ) ) {
$this->GIF .= ( $Locals_ext . $Locals_img . $Locals_tmp );
}
else {
$byte = ord ( $Locals_img { 9 } );
$byte |= 0x80;
$byte &= 0xF8;
$byte |= ( ord ( $this->BUF [ 0 ] { 10 } ) & 0x07 );
$Locals_img { 9 } = chr ( $byte );
$this->GIF .= ( $Locals_ext . $Locals_img . $Locals_rgb . $Locals_tmp );
}
}
else {
$byte = ord ( $Locals_img { 9 } );
$byte |= 0x80;
$byte &= 0xF8;
$byte |= ( ord ( $this->BUF [ $i ] { 10 } ) & 0x07 );
$Locals_img { 9 } = chr ( $byte );
$this->GIF .= ( $Locals_ext . $Locals_img . $Locals_rgb . $Locals_tmp );
}
}
else {
$this->GIF .= ( $Locals_ext . $Locals_img . $Locals_tmp );
}
$this->IMG = 1;
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFAddFooter...
::
*/
function GIFAddFooter ( ) {
$this->GIF .= ";";
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFBlockCompare...
::
*/
function GIFBlockCompare ( $GlobalBlock, $LocalBlock, $Len ) {
for ( $i = 0; $i < $Len; $i++ ) {
if (
$GlobalBlock { 3 * $i + 0 } != $LocalBlock { 3 * $i + 0 } ||
$GlobalBlock { 3 * $i + 1 } != $LocalBlock { 3 * $i + 1 } ||
$GlobalBlock { 3 * $i + 2 } != $LocalBlock { 3 * $i + 2 }
) {
return ( 0 );
}
}
return ( 1 );
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFWord...
::
*/
function GIFWord ( $int ) {
return ( chr ( $int & 0xFF ) . chr ( ( $int >> 8 ) & 0xFF ) );
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GetAnimation...
::
*/
function GetAnimation ( ) {
return ( $this->GIF );
}
}
?>
<?php
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFEncoder Version 2.0 by László Zsidi, http://gifs.hu
::
:: This class is a rewritten 'GifMerge.class.php' version.
::
:: Modification:
:: - Simplified and easy code,
:: - Ultra fast encoding,
:: - Built-in errors,
:: - Stable working
::
::
:: Updated at 2007. 02. 13. '00.05.AM'
::
*/
Class GIFEncoder {
var $GIF = "GIF89a"; /* GIF header 6 bytes */
var $VER = "GIFEncoder V2.06"; /* Encoder version */
var $BUF = Array ( );
var $LOP = 0;
var $DIS = 2;
var $COL = -1;
var $IMG = -1;
var $ERR = Array (
'ERR00' =>"Does not supported function for only one image!",
'ERR01' =>"Source is not a GIF image!",
'ERR02' =>"Unintelligible flag ",
'ERR03' =>"Could not make animation from animated GIF source",
);
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFEncoder...
::
*/
function GIFEncoder (
$GIF_src, $GIF_dly, $GIF_lop, $GIF_dis,
$GIF_red, $GIF_grn, $GIF_blu, $GIF_mod
) {
if ( ! is_array ( $GIF_src ) && ! is_array ( $GIF_tim ) ) {
printf ( "%s: %s", $this->VER, $this->ERR [ 'ERR00' ] );
exit ( 0 );
}
$this->LOP = ( $GIF_lop > -1 ) ? $GIF_lop : 0;
$this->DIS = ( $GIF_dis > -1 ) ? ( ( $GIF_dis < 3 ) ? $GIF_dis : 3 ) : 2;
$this->COL = ( $GIF_red > -1 && $GIF_grn > -1 && $GIF_blu > -1 ) ?
( $GIF_red | ( $GIF_grn << 8 ) | ( $GIF_blu << 16 ) ) : -1;
for ( $i = 0; $i < count ( $GIF_src ); $i++ ) {
if ( strToLower ( $GIF_mod ) == "url" ) {
$this->BUF [ ] = fread ( fopen ( $GIF_src [ $i ], "rb" ), filesize ( $GIF_src [ $i ] ) );
}
else if ( strToLower ( $GIF_mod ) == "bin" ) {
$this->BUF [ ] = $GIF_src [ $i ];
}
else {
printf ( "%s: %s ( %s )!", $this->VER, $this->ERR [ 'ERR02' ], $GIF_mod );
exit ( 0 );
}
if ( substr ( $this->BUF [ $i ], 0, 6 ) != "GIF87a" && substr ( $this->BUF [ $i ], 0, 6 ) != "GIF89a" ) {
printf ( "%s: %d %s", $this->VER, $i, $this->ERR [ 'ERR01' ] );
exit ( 0 );
}
for ( $j = ( 13 + 3 * ( 2 << ( ord ( $this->BUF [ $i ] { 10 } ) & 0x07 ) ) ), $k = TRUE; $k; $j++ ) {
switch ( $this->BUF [ $i ] { $j } ) {
case "!":
if ( ( substr ( $this->BUF [ $i ], ( $j + 3 ), 8 ) ) == "NETSCAPE" ) {
printf ( "%s: %s ( %s source )!", $this->VER, $this->ERR [ 'ERR03' ], ( $i + 1 ) );
exit ( 0 );
}
break;
case ";":
$k = FALSE;
break;
}
}
}
GIFEncoder::GIFAddHeader ( );
for ( $i = 0; $i < count ( $this->BUF ); $i++ ) {
GIFEncoder::GIFAddFrames ( $i, $GIF_dly [ $i ] );
}
GIFEncoder::GIFAddFooter ( );
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFAddHeader...
::
*/
function GIFAddHeader ( ) {
$cmap = 0;
if ( ord ( $this->BUF [ 0 ] { 10 } ) & 0x80 ) {
$cmap = 3 * ( 2 << ( ord ( $this->BUF [ 0 ] { 10 } ) & 0x07 ) );
$this->GIF .= substr ( $this->BUF [ 0 ], 6, 7 );
$this->GIF .= substr ( $this->BUF [ 0 ], 13, $cmap );
$this->GIF .= "!\377\13NETSCAPE2.0\3\1" . GIFEncoder::GIFWord ( $this->LOP ) . "\0";
}
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFAddFrames...
::
*/
function GIFAddFrames ( $i, $d ) {
$Locals_str = 13 + 3 * ( 2 << ( ord ( $this->BUF [ $i ] { 10 } ) & 0x07 ) );
$Locals_end = strlen ( $this->BUF [ $i ] ) - $Locals_str - 1;
$Locals_tmp = substr ( $this->BUF [ $i ], $Locals_str, $Locals_end );
$Global_len = 2 << ( ord ( $this->BUF [ 0 ] { 10 } ) & 0x07 );
$Locals_len = 2 << ( ord ( $this->BUF [ $i ] { 10 } ) & 0x07 );
$Global_rgb = substr ( $this->BUF [ 0 ], 13,
3 * ( 2 << ( ord ( $this->BUF [ 0 ] { 10 } ) & 0x07 ) ) );
$Locals_rgb = substr ( $this->BUF [ $i ], 13,
3 * ( 2 << ( ord ( $this->BUF [ $i ] { 10 } ) & 0x07 ) ) );
$Locals_ext = "!\xF9\x04" . chr ( ( $this->DIS << 2 ) + 0 ) .
chr ( ( $d >> 0 ) & 0xFF ) . chr ( ( $d >> 8 ) & 0xFF ) . "\x0\x0";
if ( $this->COL > -1 && ord ( $this->BUF [ $i ] { 10 } ) & 0x80 ) {
for ( $j = 0; $j < ( 2 << ( ord ( $this->BUF [ $i ] { 10 } ) & 0x07 ) ); $j++ ) {
if (
ord ( $Locals_rgb { 3 * $j + 0 } ) == ( $this->COL >> 0 ) & 0xFF &&
ord ( $Locals_rgb { 3 * $j + 1 } ) == ( $this->COL >> 8 ) & 0xFF &&
ord ( $Locals_rgb { 3 * $j + 2 } ) == ( $this->COL >> 16 ) & 0xFF
) {
$Locals_ext = "!\xF9\x04" . chr ( ( $this->DIS << 2 ) + 1 ) .
chr ( ( $d >> 0 ) & 0xFF ) . chr ( ( $d >> 8 ) & 0xFF ) . chr ( $j ) . "\x0";
break;
}
}
}
switch ( $Locals_tmp { 0 } ) {
case "!":
$Locals_img = substr ( $Locals_tmp, 8, 10 );
$Locals_tmp = substr ( $Locals_tmp, 18, strlen ( $Locals_tmp ) - 18 );
break;
case ",":
$Locals_img = substr ( $Locals_tmp, 0, 10 );
$Locals_tmp = substr ( $Locals_tmp, 10, strlen ( $Locals_tmp ) - 10 );
break;
}
if ( ord ( $this->BUF [ $i ] { 10 } ) & 0x80 && $this->IMG > -1 ) {
if ( $Global_len == $Locals_len ) {
if ( GIFEncoder::GIFBlockCompare ( $Global_rgb, $Locals_rgb, $Global_len ) ) {
$this->GIF .= ( $Locals_ext . $Locals_img . $Locals_tmp );
}
else {
$byte = ord ( $Locals_img { 9 } );
$byte |= 0x80;
$byte &= 0xF8;
$byte |= ( ord ( $this->BUF [ 0 ] { 10 } ) & 0x07 );
$Locals_img { 9 } = chr ( $byte );
$this->GIF .= ( $Locals_ext . $Locals_img . $Locals_rgb . $Locals_tmp );
}
}
else {
$byte = ord ( $Locals_img { 9 } );
$byte |= 0x80;
$byte &= 0xF8;
$byte |= ( ord ( $this->BUF [ $i ] { 10 } ) & 0x07 );
$Locals_img { 9 } = chr ( $byte );
$this->GIF .= ( $Locals_ext . $Locals_img . $Locals_rgb . $Locals_tmp );
}
}
else {
$this->GIF .= ( $Locals_ext . $Locals_img . $Locals_tmp );
}
$this->IMG = 1;
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFAddFooter...
::
*/
function GIFAddFooter ( ) {
$this->GIF .= ";";
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFBlockCompare...
::
*/
function GIFBlockCompare ( $GlobalBlock, $LocalBlock, $Len ) {
for ( $i = 0; $i < $Len; $i++ ) {
if (
$GlobalBlock { 3 * $i + 0 } != $LocalBlock { 3 * $i + 0 } ||
$GlobalBlock { 3 * $i + 1 } != $LocalBlock { 3 * $i + 1 } ||
$GlobalBlock { 3 * $i + 2 } != $LocalBlock { 3 * $i + 2 }
) {
return ( 0 );
}
}
return ( 1 );
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFWord...
::
*/
function GIFWord ( $int ) {
return ( chr ( $int & 0xFF ) . chr ( ( $int >> 8 ) & 0xFF ) );
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GetAnimation...
::
*/
function GetAnimation ( ) {
return ( $this->GIF );
}
}
?>
+82 -82
View File
@@ -1,82 +1,82 @@
<?
session_start( );
/**
@package AnimatedCaptcha
@author J Watkins <[email protected]>
@desc OOP Interface to AnimCaptcha ( PHP 5 )
@static
**/
class AnimCaptcha
{
static $frames ;
static $time ;
static $num ;
static $pause ;
static $ops ;
static $gifs ;
static $rand ;
static $math ;
function AnimCaptcha( $gifs, $pause )
{
if( !class_exists( 'GIFEncoder' ) and !include('GIFEncoder.class.php') )
die( 'I require GIFEncoder to be loaded before operation' );
self::$pause = (int)$pause ;
self::$gifs = $gifs ;
self::$ops = array
(
'minus',
'plus',
'times'
);
self::$math = array
(
'-',
'+',
'*'
);
self::$num['rand1'] = rand( 1, 9 );
self::$num['rand2'] = rand( 1, 9 );
self::$num['op'] = rand( 0, count( self::$math ) - 1 );
self::BuildImage( );
}
function BuildImage( )
{
self::$frames[ ] = sprintf( '%s/solve.gif', self::$gifs ) ;
self::$time[ ] = 260;
self::$frames[ ] = sprintf( '%s/%d.gif', self::$gifs, self::$num['rand1'] );
self::$time[ ] = self::$pause;
self::$frames[ ] = sprintf( '%s/%s.gif', self::$gifs, self::$ops[ self::$num['op'] ] );
self::$time[ ] = self::$pause;
self::$frames[ ] = sprintf( '%s/%d.gif', self::$gifs, self::$num['rand2'] );
self::$time[ ] = self::$pause;
self::$frames[ ] = "frames/equals.gif" ;
self::$time [ ] = 280;
foreach( self::$num as $index => $value ) $_SESSION[ $index ] = self::$num[ $value ];
}
function GetImage( )
{
eval( sprintf( '$_SESSION["answer"] = (%d %s %d);',
self::$num['rand1'],
self::$math[ self::$num['op'] ],
self::$num['rand2']
) );
if( $_SESSION['answer'] < 0 )
self::AnimCaptcha( self::$gifs, self::$pause );
$gif = new GIFEncoder( self::$frames, self::$time, 0, 2, 0, 0, 0, "url" );
if( !headers_sent( ) )
{
header ( 'Content-type:image/gif' );
echo $gif->GetAnimation ( );
}
}
}
new AnimCaptcha( 'frames', 140 );
AnimCaptcha::GetImage( );
?>
<?
session_start( );
/**
@package AnimatedCaptcha
@author J Watkins <[email protected]>
@desc OOP Interface to AnimCaptcha ( PHP 5 )
@static
**/
class AnimCaptcha
{
static $frames ;
static $time ;
static $num ;
static $pause ;
static $ops ;
static $gifs ;
static $rand ;
static $math ;
function AnimCaptcha( $gifs, $pause )
{
if( !class_exists( 'GIFEncoder' ) and !include('GIFEncoder.class.php') )
die( 'I require GIFEncoder to be loaded before operation' );
self::$pause = (int)$pause ;
self::$gifs = $gifs ;
self::$ops = array
(
'minus',
'plus',
'times'
);
self::$math = array
(
'-',
'+',
'*'
);
self::$num['rand1'] = rand( 1, 9 );
self::$num['rand2'] = rand( 1, 9 );
self::$num['op'] = rand( 0, count( self::$math ) - 1 );
self::BuildImage( );
}
function BuildImage( )
{
self::$frames[ ] = sprintf( '%s/solve.gif', self::$gifs ) ;
self::$time[ ] = 260;
self::$frames[ ] = sprintf( '%s/%d.gif', self::$gifs, self::$num['rand1'] );
self::$time[ ] = self::$pause;
self::$frames[ ] = sprintf( '%s/%s.gif', self::$gifs, self::$ops[ self::$num['op'] ] );
self::$time[ ] = self::$pause;
self::$frames[ ] = sprintf( '%s/%d.gif', self::$gifs, self::$num['rand2'] );
self::$time[ ] = self::$pause;
self::$frames[ ] = "frames/equals.gif" ;
self::$time [ ] = 280;
foreach( self::$num as $index => $value ) $_SESSION[ $index ] = self::$num[ $value ];
}
function GetImage( )
{
eval( sprintf( '$_SESSION["answer"] = (%d %s %d);',
self::$num['rand1'],
self::$math[ self::$num['op'] ],
self::$num['rand2']
) );
if( $_SESSION['answer'] < 0 )
self::AnimCaptcha( self::$gifs, self::$pause );
$gif = new GIFEncoder( self::$frames, self::$time, 0, 2, 0, 0, 0, "url" );
if( !headers_sent( ) )
{
header ( 'Content-type:image/gif' );
echo $gif->GetAnimation ( );
}
}
}
new AnimCaptcha( 'frames', 140 );
AnimCaptcha::GetImage( );
?>
+112 -112
View File
@@ -1,112 +1,112 @@
<?php
session_start();
/*
AnimCaptcha v1.3 >> 6-13-07
This Animated Gif Captcha system is brought to you courtesy of ...
[email protected] ==> Josh Storz
http://www.querythe.net/Animated-Gif-Captcha/ ==> Download Current Version
OOP (PHP 4 & 5) Interface by ...
[email protected] ==> 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";
function add_random_frames($frame) {
// random number & elapsed time of frames to *hopefully* make a cracker's life tougher
global $frames ;
global $time ;
$i = 0;
$loop = rand(6, 14); // total number of frames in loop loop
while ($i < $loop)
{
$frames [ ] = "frames/$frame.gif"; // use the solve frame so that the human eye cannot see a flicker
$time [ ] = rand(15, 25); // 5 * 20 = 1 second so the delay is never too terribly long
$i ++ ;
}
}
// get random numbers & operator and make sure the answer is >= 0
$k = 0 ;
while($k == 0)
{
$rand1 = rand(1, 9); // 1st number (1-9)
$rand3 = rand(1, 9); // 2nd number (1-9)
$rand2 = rand(0, 2); // operator (-,+,*)
if (($rand2 != 0) || ($rand3 < $rand1)) $k = 1 ;
}
// 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 ; $frame_operator = "minus" ;}
elseif ($rand2 == 1) {$_SESSION['r2'] = " + " ; $_SESSION['answer'] = $rand1 + $rand3 ; $frame_operator = "plus" ;}
else {$_SESSION['r2'] = " * " ; $_SESSION['answer'] = $rand1 * $rand3 ; $frame_operator = "times" ;}
// build the frame images and elapsed time to show in 2 arrays
$frames [ ] = "frames/solve.gif" ; // Intro message " Prove you are human ... "
$time [ ] = 140;
add_random_frames('solve') ;
// set 1st random number
$frames [ ] = "frames/" .$rand1. ".gif"; // 1st number (0-9)
$time [ ] = 35;
add_random_frames($rand1) ;
// set frame for operator
$frames [ ] = "frames/" .$frame_operator. ".gif" ;
$time [ ] = 60;
add_random_frames($frame_operator) ;
// set 2nd random number
$frames [ ] = "frames/" .$rand3. ".gif"; // 2nd number (0-9)
$time [ ] = 35;
add_random_frames($rand3) ;
// set final frame for equals
$frames [ ] = "frames/equals.gif" ; // Ending message " equals = "
$time [ ] = 140; // equals frame time (100 = 1 second)
add_random_frames('equals') ;
// 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
0, 0, 0, // rgb of transparency
"url" // source type
);
// display the image
Header ( 'Content-type:image/gif' );
echo $gif->GetAnimation ( );
?>
<?php
session_start();
/*
AnimCaptcha v1.3 >> 6-13-07
This Animated Gif Captcha system is brought to you courtesy of ...
[email protected] ==> Josh Storz
http://www.querythe.net/Animated-Gif-Captcha/ ==> Download Current Version
OOP (PHP 4 & 5) Interface by ...
[email protected] ==> 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";
function add_random_frames($frame) {
// random number & elapsed time of frames to *hopefully* make a cracker's life tougher
global $frames ;
global $time ;
$i = 0;
$loop = rand(6, 14); // total number of frames in loop loop
while ($i < $loop)
{
$frames [ ] = "frames/$frame.gif"; // use the solve frame so that the human eye cannot see a flicker
$time [ ] = rand(15, 25); // 5 * 20 = 1 second so the delay is never too terribly long
$i ++ ;
}
}
// get random numbers & operator and make sure the answer is >= 0
$k = 0 ;
while($k == 0)
{
$rand1 = rand(1, 9); // 1st number (1-9)
$rand3 = rand(1, 9); // 2nd number (1-9)
$rand2 = rand(0, 2); // operator (-,+,*)
if (($rand2 != 0) || ($rand3 < $rand1)) $k = 1 ;
}
// 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 ; $frame_operator = "minus" ;}
elseif ($rand2 == 1) {$_SESSION['r2'] = " + " ; $_SESSION['answer'] = $rand1 + $rand3 ; $frame_operator = "plus" ;}
else {$_SESSION['r2'] = " * " ; $_SESSION['answer'] = $rand1 * $rand3 ; $frame_operator = "times" ;}
// build the frame images and elapsed time to show in 2 arrays
$frames [ ] = "frames/solve.gif" ; // Intro message " Prove you are human ... "
$time [ ] = 140;
add_random_frames('solve') ;
// set 1st random number
$frames [ ] = "frames/" .$rand1. ".gif"; // 1st number (0-9)
$time [ ] = 35;
add_random_frames($rand1) ;
// set frame for operator
$frames [ ] = "frames/" .$frame_operator. ".gif" ;
$time [ ] = 60;
add_random_frames($frame_operator) ;
// set 2nd random number
$frames [ ] = "frames/" .$rand3. ".gif"; // 2nd number (0-9)
$time [ ] = 35;
add_random_frames($rand3) ;
// set final frame for equals
$frames [ ] = "frames/equals.gif" ; // Ending message " equals = "
$time [ ] = 140; // equals frame time (100 = 1 second)
add_random_frames('equals') ;
// 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
0, 0, 0, // rgb of transparency
"url" // source type
);
// display the image
Header ( 'Content-type:image/gif' );
echo $gif->GetAnimation ( );
?>