PHP言語 非常に便利な検証コードツールクラスプログラム

サンプルコード:

<?php
/**
* 認証コードクラス
*/
class Base_Tool_Verify{
/**
* 認証コードを作成するメソッド
*/
public static function createCode(){
//認証画像を生成
// すべて数字
$str = “D,B,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,W,J,K,M,M,N,K,P,Q,R,S,T,U,V,W,X,Y,Z"; //表示される文字、追加と削除
$list = explode(“,", $str);
$cmax = count($list) – 1;
$verifyCode = ";
for ( $i=0; $i < 4; $i++ ){
$randnum = mt_rand(0, $cmax);
$verifyCode .= $list[$randnum];
}
$_SESSION['code’] = $verifyCode; //セッションに文字を保存

$im = imagecreate(80,28); //画像を生成
$black = imagecolorallocate($im, 0 ,0 ,0); //以下は3つの色を設定
$white = imagecolorallocate($im, 244,249,244);
$gray = imagecolorallocate($im, rand(200,255),rand(200,255),rand(200,255));
$red = imagecolorallocate($im, rand(200,255), rand(200,255), rand(200,255));
$rand_color = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
$rand_color2 = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
imagefill($im,0,0,$white); //画像に色を穴埋める
$pix=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
mt_srand();
for($i=0;$i<100;$i++)
{
imagesetpixel($im,mt_rand(0,180),mt_rand(0,35),$pix);
}
imageline($im, 0,rand(0,28), 80, rand(0,28), $rand_color);
imageline($im, 0,rand(0,28), 80, rand(0,28), $rand_color2);

//画像に認証コードを入る
$mycolor = imagecolorallocate($im, 0, 78, 152);
$path = API_PATH.DS.’Base’.DS.’Tool’;
putenv('GDFONTPATH=’ . $path);
$font = 'simhei.ttf’;
$arrstr = str_split($verifyCode);
imagettftext($im, 20, rand(0,50), 10, rand(20,30), $mycolor, $font, $arrstr[0]);
imagettftext($im, 15, rand(0,50), 20, rand(20,30), $mycolor, $font, $arrstr[1]);
imagettftext($im, 15, rand(0,50), 30, rand(20,30), $mycolor, $font, $arrstr[2]);
imagettftext($im, 15, rand(0,50), 40, rand(20,30), $mycolor, $font, $arrstr[3]);
$font2=imagecolorallocate($im,41,163,238);
imagerectangle($im,0,0,1,1,$font2);
imagepng($im);
imagedestroy($im);
}
}

Development

Posted by arkgame