Login   Register  
PHP Classes
elePHPant
Icontem

File: include/DayyanConfirmImageClass.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Mohammad Dayyan  >  Dayyan's CAPTCHA Image  >  include/DayyanConfirmImageClass.php  >  Download  
File: include/DayyanConfirmImageClass.php
Role: Class source
Content type: text/plain
Description: Main Class
Class: Dayyan's CAPTCHA Image
Generate images for CAPTCHA validation
Author: By
Last change: wave effect added
Date: 5 years ago
Size: 6,715 bytes
 

Contents

Class file image Download
<?php
/*
Created by Mohammad Dayyan - 1387/3/2
Mds_Soft@yahoo.com
*/

if ( !defined('MohammadDayyan') )
{
    die (
"Hacking attempt <br /> <b>" __FILE__ "<br /> Line " .  __LINE__  "</b>" );
    exit;
}

class 
DayyanConfirmImage
{
    private 
$showLine false;// for windows
    
private $applyWave true;// for windows
    
private $winHeight 50;
    private 
$winWidth 320;
    
    private 
$Characters// random characters
    
    
private $Colors =  array (    '0' => '145',
                                
'1' => '204',
                                
'2' => '177',
                                
'3' => '184',
                                
'4' => '199',
                                
'5' => '255');

////////////////////////////////////////////////////////////////////////////////
    
public function __construct($ConfirmCode)
    {
        
$this -> Characters $ConfirmCode;
    }

////////////////////////////////////////////////////////////////////////////////
    
public function ShowImage()
    {
        
//detect server operation system
        
if ( strtoupper(substr(PHP_OS03)) === 'WIN' )    //windows detected
            
$this -> win();
        else    
//linux detected
            
$this -> linux();
    }

////////////////////////////////////////////////////////////////////////////////
    
private function win()
    {
        
////////////////////////////////////
        //background image
        
$image imagecreatetruecolor($this -> winWidth$this -> winHeight) or die("<b>" __FILE__ "</b><br />" __LINE__ " : " ."Cannot Initialize new GD image stream");
        
$bg imagecolorallocate($image255255255);
        
imagefill($image1010$bg);

        for (
$x=0$x $this -> winWidth$x++)
        {
            for (
$y=0$y $this -> winHeight$y++)
            {
                
$random mt_rand(5);
                
$temp_color imagecolorallocate($image$this -> Colors["$random"], $this -> Colors["$random"], $this -> Colors["$random"]);
                
imagesetpixel$image$x$y $temp_color );
            }
        }

        
$char_color imagecolorallocatealpha($image00090);

        
//Font
        
$font "tahomabd.ttf";
        
$font_size 33;
        
////////////////////////////////////
        //Image characters

        
$char "";

        
$char $this -> Characters[0];
        
$random_x mt_rand(10 20);
        
$random_y mt_rand(35 45);
        
$random_angle mt_rand(-20 20);
        
imagettftext($image$font_size$random_angle$random_x$random_y$char_color$font$char);
        


        
$char $this -> Characters[1];
        
$random_x mt_rand(50 70);
        
$random_y mt_rand(35 45);
        
$random_angle mt_rand(-20 20);
        
imagettftext($image$font_size$random_angle$random_x$random_y$char_color$font$char);



        
$char $this -> Characters[2];
        
$random_x mt_rand(100 120);
        
$random_y mt_rand(35 45);
        
$random_angle mt_rand(-20 20);
        
imagettftext($image$font_size$random_angle$random_x$random_y$char_color$font$char);


        
$char $this -> Characters[3];
        
$random_x mt_rand(150 170);
        
$random_y mt_rand(35 45);
        
$random_angle mt_rand(-20 20);
        
imagettftext($image$font_size$random_angle$random_x$random_y$char_color$font$char);


        
$char $this -> Characters[4];
        
$random_x mt_rand(200 220);
        
$random_y mt_rand(35 45);
        
$random_angle mt_rand(-20 20);
        
imagettftext($image$font_size$random_angle$random_x$random_y$char_color$font$char);


        
$char $this -> Characters[5];
        
$random_x mt_rand(250 270);
        
$random_y mt_rand(35 45);
        
$random_angle mt_rand(-20 20);
        
imagettftext($image$font_size$random_angle$random_x$random_y$char_color$font$char);

        
////////////////////////////////////
        
if ($this -> applyWave)
            
$image $this -> apply_wave($image$this -> winWidth$this -> winHeight);
            
        
////////////////////////////////////
        //lines
        
if ($this -> showLine)
        {
            for (
$i=0$i<$this->winWidth$i++ )
            {
                if (
$i%10 == 0)
                {
                    
imageline $image$i0$i+1050$char_color );
                    
imageline $image$i0$i-1050$char_color );
                }
            }
        }
            
        
////////////////////////////////////
        
return imagepng($image);
        
imagedestroy($image);
    }

////////////////////////////////////////////////////////////////////////////////
    
private function linux()
    {
        
////////////////////////////////////
        //Background image
        
$image imagecreatetruecolor(15050) or die("<b>" __FILE__ "</b><br />" __LINE__ " : " ."Cannot Initialize new GD image stream");
        
$bg imagecolorallocate($image255255255);
        
imagefill($image1010$bg);

        for (
$x=0$x 150$x++)
        {
            for (
$y=0$y 50$y++)
            {
                
$random mt_rand(5);
                
$temp_color imagecolorallocate($image$this -> Colors["$random"], $this -> Colors["$random"], $this -> Colors["$random"]);
                
imagesetpixel$image$x$y $temp_color );
            }
        }

        
$char_color imagecolorallocatealpha($image00060);

        
////////////////////////////////////
        //Image Info
        
$font 5;

        
////////////////////////////////////
        //Image characters
        
$char $this -> Characters[0];
        
$random_x mt_rand(10 20);
        
$random_y mt_rand(15,25);
        
imagestring($image$font$random_x$random_y$char$char_color);



        
$char $this -> Characters[1];
        
$random_x mt_rand(30 40);
        
$random_y mt_rand(15,25);
        
imagestring($image$font$random_x$random_y$char$char_color);



        
$char $this -> Characters[2];
        
$random_x mt_rand(50 60);
        
$random_y mt_rand(15,25);
        
imagestring($image$font$random_x$random_y$char$char_color);


        
$char $this -> Characters[3];
        
$random_x mt_rand(70 80);
        
$random_y mt_rand(15,25);
        
imagestring($image$font$random_x$random_y$char$char_color);


        
$char $this -> Characters[4];
        
$random_x mt_rand(90 100);
        
$random_y mt_rand(15,25);
        
imagestring($image$font$random_x$random_y$char$char_color);


        
$char $this -> Characters[5];
        
$random_x mt_rand(110 120);
        
$random_y mt_rand(15,25);
        
imagestring($image$font$random_x$random_y$char$char_color);

        
///////////////////////
        
return imagepng($image);
        
imagedestroy($image);
    }

////////////////////////////////////////////////////////////////////////////////
    
private function apply_wave($image$width$height)
    {        
        
$x_period 10;
        
$y_period 10;
        
$y_amplitude 5;
        
$x_amplitude 5;
        
        
$xp $x_period*rand(1,3);
        
$k rand(0,100);
        for (
$a 0$a<$width$a++)
            
imagecopy($image$image$a-1sin($k+$a/$xp)*$x_amplitude$a01$height);
            
        
$yp $y_period*rand(1,2);
        
$k rand(0,100);
        for (
$a 0$a<$height$a++)
            
imagecopy($image$imagesin($k+$a/$yp)*$y_amplitude$a-10$a$width1);
        
        return 
$image;
    }
}

?>