ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Ignore:
Timestamp:
Jan 12, 2008, 6:35:02 AM (12 years ago)
Author:
ebihara
Message:

#1755:KCAPTCHAのバージョンを1.2.3から1.2.5に上げた

File:
1 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/trunk/lib/include/kcaptcha/kcaptcha.php

    r227 r4929  
    11<?php
    22
    3 # KCAPTCHA PROJECT VERSION 1.2.3
     3# KCAPTCHA PROJECT VERSION 1.2.5
    44
    55# Automatic test to tell computers and humans apart
    66
    7 # Copyright by Kruglov Sergei, 2006
     7# Copyright by Kruglov Sergei, 2006, 2007
    88# www.captcha.ru, www.kruglov.ru
    99
    10 # System requirements: PHP w/ GD
     10# System requirements: PHP 4.0.6+ w/ GD
    1111
    1212# KCAPTCHA is a free software. You can freely use it for building own site or software.
     
    2121        // generates keystring and image
    2222        function KCAPTCHA(){
     23
    2324                require(dirname(__FILE__).'/kcaptcha_config.php');
    2425                $fonts=array();
     
    4243                                        $this->keystring.=$allowed_symbols{mt_rand(0,strlen($allowed_symbols)-1)};
    4344                                }
    44                                 if(!preg_match('/cp|cb|ck|c6|c9|rn|rm|co|do/',$this->keystring)) break;
     45                                if(!preg_match('/cp|cb|ck|c6|c9|rn|rm|mm|co|do|cl|db|qp|qb|dp/', $this->keystring)) break;
    4546                        }
    4647               
    47                         $font_file=$fonts[mt_rand(0,count($fonts)-1)];
     48                        $font_file=$fonts[mt_rand(0, count($fonts)-1)];
    4849                        $font=imagecreatefrompng($font_file);
    49                         $black=imagecolorallocate($font,0,0,0);
     50                        imagealphablending($font, true);
    5051                        $fontfile_width=imagesx($font);
    5152                        $fontfile_height=imagesy($font)-1;
     
    7273                        }
    7374
    74                         $img=imagecreatetruecolor($width,$height);
    75                         $white=imagecolorallocate($img,255,255,255);
    76                         $black=imagecolorallocate($img,0,0,0);
    77 
    78                         imagefilledrectangle ($img,0,0,$width-1,$height-1,$white);
     75                        $img=imagecreatetruecolor($width, $height);
     76                        imagealphablending($img, true);
     77                        $white=imagecolorallocate($img, 255, 255, 255);
     78                        $black=imagecolorallocate($img, 0, 0, 0);
     79
     80                        imagefilledrectangle($img, 0, 0, $width-1, $height-1, $white);
    7981
    8082                        // draw text
     
    8991                                        if($i>0){
    9092                                                $shift=1000;
    91                                                 for($sy=1;$sy<$fontfile_height-15;$sy+=2){
    92                                                         for($sx=$m['start']-1;$sx<$m['end'];$sx++){
     93                                                for($sy=7;$sy<$fontfile_height-20;$sy+=1){
     94                                                        //for($sx=$m['start']-1;$sx<$m['end'];$sx+=1){
     95                                                        for($sx=$m['start']-1;$sx<$m['end'];$sx+=1){
    9396                                                        $rgb=imagecolorat($font, $sx, $sy);
    9497                                                        $opacity=$rgb>>24;
     
    9699                                                                        $left=$sx-$m['start']+$x;
    97100                                                                        $py=$sy+$y;
    98                                                                         for($px=min($left,$width-1);$px>$left-15 && $px>=0;$px--){
     101                                                                        if($py>$height) break;
     102                                                                        for($px=min($left,$width-1);$px>$left-12 && $px>=0;$px-=1){
    99103                                                                        $color=imagecolorat($img, $px, $py) & 0xff;
    100104                                                                                if($color+$opacity<190){
     
    109113                                                        }
    110114                                                }
     115                                                if($shift==1000){
     116                                                        $shift=mt_rand(4,6);
     117                                                }
     118
    111119                                        }
    112120                                }else{
     
    122130
    123131                // credits. To remove, see configuration file
    124                 $img2=imagecreatetruecolor($width, $height+($show_credits?'12':0));
     132                $img2=imagecreatetruecolor($width, $height+($show_credits?12:0));
    125133                $foreground=imagecolorallocate($img2, $foreground_color[0], $foreground_color[1], $foreground_color[2]);
    126134                $background=imagecolorallocate($img2, $background_color[0], $background_color[1], $background_color[2]);
     135                imagefilledrectangle($img2, 0, 0, $width-1, $height-1, $background);           
    127136                imagefilledrectangle($img2, 0, $height, $width-1, $height+12, $foreground);
    128137                $credits=empty($credits)?$_SERVER['HTTP_HOST']:$credits;
     
    135144                $rand4=mt_rand(750000,1200000)/10000000;
    136145                // phases
    137                 $rand5=mt_rand(0,3141592)/500000;
    138                 $rand6=mt_rand(0,3141592)/500000;
    139                 $rand7=mt_rand(0,3141592)/500000;
    140                 $rand8=mt_rand(0,3141592)/500000;
     146                $rand5=mt_rand(0,31415926)/10000000;
     147                $rand6=mt_rand(0,31415926)/10000000;
     148                $rand7=mt_rand(0,31415926)/10000000;
     149                $rand8=mt_rand(0,31415926)/10000000;
    141150                // amplitudes
    142151                $rand9=mt_rand(330,420)/110;
     
    144153
    145154                //wave distortion
     155
    146156                for($x=0;$x<$width;$x++){
    147157                        for($y=0;$y<$height;$y++){
    148158                                $sx=$x+(sin($x*$rand1+$rand5)+sin($y*$rand3+$rand6))*$rand9-$width/2+$center+1;
    149159                                $sy=$y+(sin($x*$rand2+$rand7)+sin($y*$rand4+$rand8))*$rand10;
    150                
     160
    151161                                if($sx<0 || $sy<0 || $sx>=$width-1 || $sy>=$height-1){
    152                                         $color=255;
    153                                         $color_x=255;
    154                                         $color_y=255;
    155                                         $color_xy=255;
     162                                        continue;
    156163                                }else{
    157164                                        $color=imagecolorat($img, $sx, $sy) & 0xFF;
     
    161168                                }
    162169
    163                                 if($color==0 && $color_x==0 && $color_y==0 && $color_xy==0){
     170                                if($color==255 && $color_x==255 && $color_y==255 && $color_xy==255){
     171                                        continue;
     172                                }else if($color==0 && $color_x==0 && $color_y==0 && $color_xy==0){
    164173                                        $newred=$foreground_color[0];
    165174                                        $newgreen=$foreground_color[1];
    166175                                        $newblue=$foreground_color[2];
    167                                 }else if($color==255 && $color_x==255 && $color_y==255 && $color_xy==255){
    168                                         $newred=$background_color[0];
    169                                         $newgreen=$background_color[1];
    170                                         $newblue=$background_color[2]; 
    171176                                }else{
    172177                                        $frsx=$sx-floor($sx);
     
    174179                                        $frsx1=1-$frsx;
    175180                                        $frsy1=1-$frsy;
     181
    176182                                        $newcolor=(
    177183                                                $color*$frsx1*$frsy1+
     
    189195                                }
    190196
    191                                 imagesetpixel($img2, $x, $y, imagecolorallocate($img2,$newred,$newgreen,$newblue));
     197                                imagesetpixel($img2, $x, $y, imagecolorallocate($img2, $newred, $newgreen, $newblue));
    192198                        }
    193199                }
     
    211217}
    212218
    213 
    214219?>
Note: See TracChangeset for help on using the changeset viewer.