PHP検証コード機能の実装

巴扎黑
リリース: 2016-11-23 13:32:12
オリジナル
903 人が閲覧しました

/**

*認証コード画像を生成

*/

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);

/*描画終了絵を描く*/

}

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート