Login   Register  
PHP Classes
elePHPant
Icontem

File: captcha.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Radovan Janjic  >  PHP JSONP Response  >  captcha.php  >  Download  
File: captcha.php
Role: Example script
Content type: text/plain
Description: Example script
Class: PHP JSONP Response
Encode and generate a response to JSONP request
Author: By
Last change: Changed to static calls of methods
Filling the Repository
Date: 2 months ago
Size: 2,096 bytes
 

Contents

Class file image Download
<?php
/*
*
* Simple captcha script used for JSONP example.
*
*/
require 'JSONP.class.php';

function 
hex2rgb($hex) {
   
$hex str_replace('#'NULL$hex);
   if (
strlen($hex) == 3) {
      
$r hexdec(str_repeat(substr($hex01), 2));
      
$g hexdec(str_repeat(substr($hex11), 2));
      
$b hexdec(str_repeat(substr($hex21), 2));
   } else {
      
$r hexdec(substr($hex02));
      
$g hexdec(substr($hex22));
      
$b hexdec(substr($hex42));
   }
   return array(
$r$g$b);
}

function 
validateHexColor($hex) {
    
$hex = (substr($hex01) == '#') ? $hex '#' $hex;
    if (
preg_match('/^#([a-f0-9]{6}|[a-f0-9]{3})$/i'$hex)) {
        return 
TRUE;
    } else {
        return 
FALSE;
    }
}

session_start();

if (isset(
$_GET['expected'])) {
    if (
$_GET['expected'] == $_SESSION['expected']) {
        
JSONP::output(TRUE);
    } else {
        
JSONP::output(FALSE);
    }
} else {
    
// Background color
    
if (isset($_GET['bg']) && validateHexColor($_GET['bg'])) {
        
$bgc hex2rgb($_GET['bg']);
    } else {
        
$bgc hex2rgb('#fff');
    }

    
// Foreground color
    
if (isset($_GET['fg']) && validateHexColor($_GET['fg'])) {
        
$fgc hex2rgb($_GET['fg']);
    } else {
        
$fgc hex2rgb('#000');
    }

    
// Font
    
if (isset($_GET['font']) && (int) $_GET['font'] > && (int) $_GET['font'] <= 5) {
        
$font = (int) $_GET['font'];
    } else {
        
$font 5;
    }
    
    
// Is code?
    
if (isset($_GET['code']) && $_GET['code']) {
        
$string rand(10009999);
        
$_SESSION['expected'] = $string;
    } else {
        
$n1 rand(19);
        
$n2 rand(19);
        
$string $n1 ' + ' $n2;
        
$_SESSION['expected'] = $n1 $n2;
    }
    
    
// Width
    
$w imagefontwidth($font) * strlen($string) + 10;
    
    
// Height
    
$h imagefontheight($font) + 10;
    
    
$im imagecreatetruecolor($w$h);
    
$bg imagecolorallocate($im$bgc[0], $bgc[1], $bgc[2]); //background color blue
    
$fg imagecolorallocate($im$fgc[0], $fgc[1], $fgc[2]); //text color white

    
imagefill($im00$bg);
    
imagestring($im$font55,  $string$fg);
    
header("Cache-Control: no-cache, must-revalidate");
    
header('Content-type: image/png');
    
imagepng($im);
    
imagedestroy($im);
}