/**
*認証コード画像を生成
*/
public function actionVerfiycode() {
Header ( "Content-type: image/gif" );
$border = 0 // ボーダーが必要かどうか 1 はい: 0; no
$how = 4; //検証コードの数字
$w = $how * 15; //画像の幅
$fontsize = 5;
$alpha = "abcdefghijkmnopqrstuvwxyz"; //検証コードの内容 1: 文字 $number = "0123456789" //検証コードの内容 2: 数字 $randcode = "" //検証コード文字列の初期化 ; ( ( double ) microtime () * 1000000 ); //乱数シードを初期化 $im = ImageCreate ( $w, $h ) // 検証画像を作成 $bgcolor = ImageColorAllocate ( $im, 255, 255, 255 ); // 背景色を設定します ImageFill ( $im, 0, 0, $bgcolor ); // 背景色を塗りつぶします if ($border) { $black = ImageColorAllocate ( $im, 0, 0, 0 ); //境界線の色を設定します ImageRectangle ( $im, 0, 0, $w - 1, $h - 1, $black ) // 境界線を描画します } for($i = 0; $i $alpha_or_number = mt_rand (0, 1) $str = $alpha_or_number ? what = mt_rand ( 0, strlen ( $str ) - 1 ); // どの文字を取得する $code = substr ( $str, $that, 1 ) // 文字を取得する $j = ! ? 4 : $j + 15; // 文字の位置を描画します $color3 = ImageColorAllocate ( $im, mt_rand ( 0, 100 ), mt_rand ( 0, 100 ) );描画される ImageChar ( $im , $fontsize, $j, 3, $code, $color3 ); // 文字を描画する $randcode .= $code; // 検証コード文字列を少しずつ追加します } for($i = 0; $i { $color1 = ImageColorAllocate ( $im, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ) ); //干渉線の色 ImageArc ( $im, mt_rand ( - 5, $w ), mt_rand ( - 5, $h ), mt_rand ( 20, 300 ), mt_rand ( 20, 200 ), 55, 44, $color1 ); //干渉線 } for($i = 0; $i < $how * 40; $i ++) //背景の干渉を描画Points { $color2 = ImageColorAllocate ( $im, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ) ); //干渉点の色 ImageSetPixel ( $im, mt_rand ( 0, $w ), mt_rand ( 0 , $h ), $color2 ); //干渉点 } $session=new CHttpSession; $session->open(); Yii::app ()->session-> add('randcode',$randcode); /*描画終了*/ Imagegif ($im); ImageDestroy ($im); /*描画終了絵を描く*/ }