first commit
This commit is contained in:
112
_rejestracja/core/plugins/Captcha.php
Normal file
112
_rejestracja/core/plugins/Captcha.php
Normal file
@@ -0,0 +1,112 @@
|
||||
<?
|
||||
|
||||
function put_char($char,$rgb,$posx,$posy) {
|
||||
}
|
||||
|
||||
function confirm($string) {
|
||||
$config = array(
|
||||
'font'=>'arial.ttf', // font
|
||||
'fontpath'=>PATH_CORE.'/plugins/', // polozenie pliku z fontem
|
||||
'image'=>'captcha1.png', // nazwa obrazka typu PNG uzywanego jako background
|
||||
'light'=>0, // jasnosc napisu, 100=bialy, 0=czarny
|
||||
'saturation'=>90, // nasycenie koloru napisu, 0=szary, 100=najbardziej nasycony
|
||||
'alpha'=>60, // przezroczystosc napisu, 0=bez przezroczystosci, 100=calkowicie transparentny
|
||||
'imageheight'=>60,
|
||||
'imagewidth'=>160
|
||||
);
|
||||
|
||||
|
||||
|
||||
putenv('GDFONTPATH=' . realpath($config['fontpath']));
|
||||
//$im = imagecreatefrompng($config['image']);
|
||||
$im = imagecreatetruecolor($config['imagewidth'], $config['imageheight']);
|
||||
if ($im) {
|
||||
$white = imagecolorallocate($im, 255, 255, 255);
|
||||
imagefilledrectangle($im, 0, 0, $config['imagewidth'], $config['imageheight'], $white);
|
||||
$maxfontheight=$config['imageheight']*0.7;
|
||||
$minfontheight=$config['imageheight']*0.4;
|
||||
|
||||
$px = ($config['imagewidth']-20)/(strlen($string));
|
||||
|
||||
header('Content-Type: image/png');
|
||||
header('Cache-control: no-cache, no-store');
|
||||
|
||||
$textcolor=mt_rand(0, 359);
|
||||
for ($i=0; $i<20; $i++) {
|
||||
$rgb=hls2rgb(mt_rand($textcolor+20, $textcolor+319),60,$config['saturation']);
|
||||
$color = imagecolorallocatealpha($im, $rgb[0], $rgb[1],$rgb[2],$config['alpha']);
|
||||
$angle=mt_rand(-15, 15);
|
||||
$fontheight=mt_rand($minfontheight/2, $minfontheight);
|
||||
$posx=mt_rand(0, $config['imagewidth']);
|
||||
$posy=mt_rand($fontheight, $config['imageheight']);
|
||||
imagettftext( $im, $fontheight, $angle, $posx, $posy, $color, realpath($config['fontpath']).'/'.$config['font'], chr(mt_rand(ord('A'),ord('Z'))) );
|
||||
}
|
||||
|
||||
$rgb=hls2rgb($textcolor,$config['light'],$config['saturation']);
|
||||
$color = imagecolorallocatealpha($im, $rgb[0], $rgb[1],$rgb[2],$config['alpha']);
|
||||
for ($i=0; $i<strlen($string); $i++) {
|
||||
$angle=mt_rand(-15, 15);
|
||||
$fontheight=mt_rand($minfontheight, $maxfontheight);
|
||||
$posx=$i*$px+mt_rand(0, $px/4)+10;
|
||||
$py = ($config['imageheight']+$fontheight)/2;
|
||||
imagettftext( $im, $fontheight, $angle, $posx, $py, $color, realpath($config['fontpath']).'/'.$config['font'], $string[$i] );
|
||||
}
|
||||
|
||||
for ($i=0; $i<20; $i++) {
|
||||
$rgb=hls2rgb(mt_rand($textcolor+20, $textcolor+319),60,$config['saturation']);
|
||||
$color = imagecolorallocatealpha($im, $rgb[0], $rgb[1],$rgb[2],$config['alpha']);
|
||||
$angle=mt_rand(-15, 15);
|
||||
$fontheight=mt_rand($minfontheight/2, $minfontheight);
|
||||
$posx=mt_rand(0, $config['imagewidth']);
|
||||
$posy=mt_rand($fontheight, $config['imageheight']);
|
||||
imagettftext( $im, $fontheight, $angle, $posx, $posy, $color, realpath($config['fontpath']).'/'.$config['font'], chr(mt_rand(ord('A'),ord('Z'))) );
|
||||
}
|
||||
|
||||
$color = imagecolorallocate($im, 0, 0,0);
|
||||
imagepng($im);
|
||||
imagedestroy($im);
|
||||
}
|
||||
else
|
||||
die('Problem with file '.$config['image']);
|
||||
}
|
||||
|
||||
function XRGB($hh, $mm1, $mm2) {
|
||||
// funkcja pomocnicza
|
||||
$hh=$hh%360;
|
||||
|
||||
if ($hh < 60)
|
||||
return $mm1 + ($mm2 - $mm1) * $hh / 60;
|
||||
elseif ($hh < 180)
|
||||
return $mm2;
|
||||
elseif ($hh < 240)
|
||||
return $mm1 + ($mm2 - $mm1) * (240 - $hh) / 60;
|
||||
else
|
||||
return $mm1;
|
||||
}
|
||||
|
||||
function hls2rgb($h,$l,$s) {
|
||||
$il = ($l%100) / 100;
|
||||
$ih = ($h%360);
|
||||
$is = ($s%100) / 100;
|
||||
if ($il <= 0.5)
|
||||
$m2 = $il * (1 + $is);
|
||||
else
|
||||
$m2 = $il + $is - $il * $is;
|
||||
|
||||
$m1 = 2*$il - $m2;
|
||||
|
||||
if ($s == 0) {
|
||||
$ir = $il;
|
||||
$ig = $il;
|
||||
$ib = $il;
|
||||
}
|
||||
else {
|
||||
$ir = XRGB($ih + 120, $m1, $m2);
|
||||
$ig = XRGB($ih , $m1, $m2);
|
||||
$ib = XRGB($ih - 120, $m1, $m2);
|
||||
}
|
||||
return array(round($ir * 255),round($ig * 255),round($ib * 255));
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user