ホームページ >バックエンド開発 >PHPチュートリアル >PHP検証コードのパッケージ化

PHP検証コードのパッケージ化

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-23 13:21:34801ブラウズ

/**
* 確認コードを生成します
* @param int $type 1: 純粋な数字、2: 純粋な文字、3: 数字と文字の混合
* @param int $length
* @return string
*/
function buildRandomString($type=1,$length=4){
if ($type == 1) {
$chars = join ( "", range ( 0, 9) ) );
} elseif ($type == 2) {
$chars = join ( "", array_merge ( range ( "a", "z" ), range ( "A", "Z" ) ) );
elseif ($type == 3) {
$chars = join ( "", array_merge ( range ( "a", "z" ), range ( "A", "Z" ), range ( 0, 9 ) ) );
}
if ($length > strlen ( $chars )) {
exit ( "文字列の長さが足りません" );
}
$chars = str_shuffle ( $chars );
return substr ( $chars, 0, $length );
}

//GD ライブラリを通じて検証コードを作成

function verifyImage($type=1,$length=4,$pixel=0,$line=0,$sess_name = "verify "){

session_start();
//キャンバスを作成します
$width = 80;
$height = 28;
$image = imagecreatetruecolor ( $width, $height );
$white = imagecolorallocate ( $image, 255, 255, 255 );
$black = imagecolorallocate ( $image, 0, 0, 0 );
//キャンバスを塗りつぶされた四角形で塗りつぶします
imagefilledrectangle ( $image, 1, 1, $width - 2, $height - 2, $white );
$chars = buildRandomString ( $type, $length );
$_SESSION [$sess_name] = $chars;
//$fontfiles = array ("MSYH.TTF", "MSYHBD.TTF") , "SIMLI. TTF", "SIMSUN.TTC", "SIMYOU.TTF", "STZHONGS.TTF" );
$fontfiles = array ("SIMYOU.TTF");
//フォントファイルが比較的大きいため、必要な場合は、フォントを自分で追加できます。フォントを実行して入力すると、対応するフォントが表示されます
for($i = 0; $i < $length; $i ++) {
$size = mt_rand (14, 18);
$angle = mt_rand (- 15, 15);
$x = 5 + $i * $size;
$y = mt_rand ( 20, 26);
$fontfile = $fontfiles[mt_rand ( 0, count ( $fontfiles ) - 1 )];
putenv('GDFONTPATH=' . realpath('.'));
$color = imagecolorallocate ( $image , mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );
$text = substr ( $chars, $i, 1 );
//putenv('GDFONTPATH=' . realpath( '.')) ;

// 使用するフォントに名前を付けます (拡張子 .ttf がないことに注意してください)
imagettftext ( $image, $size, $angle, $x, $y, $color, $fontfile, $text );
}
if ($pixel) {
for($i = 0; $i imagesetpixel ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $black );
}
}
if ($line) {
for($i = 1; $i $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );
imageline ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1) ), mt_rand ( 0 , $width - 1 ), mt_rand ( 0, $height - 1 ), $color );
}
}

header ( "content-type:image/gif" );// ヘッダー情報を設定します
imagegif ( $image );
imagedestroy ( $image );
}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。