Kstyleのゆる~い日々

kstyle980.exblog.jp ブログトップ

PHPでの画像認証をつくってみた

みなさんこんにちは003.gif

私は、お仕事でHPやシステムを作っているのですが、

今回は画像認証を簡単に作れないか考えてみました034.gif


システムに詳しくない方も一度は見たことがあると思います

b0335034_13201646.png



↑こんなやつです




HPなどを作ってると問い合わせページなどからロボットが勝手に送信してくるので

どうにかできないかと思っていました013.gif


ネットにはたくさん部品としてあるのですが、

自分の作っているHPのデザインに全くあっていないのがほとんどです008.gif

なので、自分でつっくっちゃいました(PHP4)071.gif

b0335034_13452690.jpg




↑こんな感じになります

session_start();

/***********************************************
文字列生成用1
***********************************************/


//ランダムに文字列&数値を作成
//$md5_hash = md5(rand(0,999));

// 文字列を5桁にする
//$code = substr($md5_hash, 15, 5);


/***********************************************
文字列生成用2
***********************************************/

//文字列の桁数

$nLengthRequired=5;
//使用する文字列
//$sCharList = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

$sCharList = "abcdef0123456789";
mt_srand();
$code = "";
//文字列生成
for($i = 0; $i < $nLengthRequired; $i++)
$code .= $sCharList{mt_rand(0, strlen($sCharList) - 1)};


/***********************************************
イメージ作成
***********************************************/

//空のイメージファイルを作成 250*60 pixel

$im = imagecreate(250, 60);

//フォント指定
$font_path = "../georgia.ttf";

// 白色の背景と青色のテキスト
$bg = imagecolorallocate($im,255, 255, 255);
$textcolor = imagecolorallocate($im, 0,0,136);

//背景にラインを引く
$polcolor = imagecolorallocate($im, 150,150,150);
imageline($im,0, 30, 250, 30, $polcolor );
imageline($im,83, 0, 83, 60, $polcolor );
imageline($im,166, 0, 166, 60, $polcolor );


// 左上に文字列を描画する
ImageTTFText ($im, 40, 0, 60, 45, $textcolor, $font_path, $code);


// PNG形式で画像を出力する
header("Content-type: image/png");
imagepng($im);
ImageDestroy($im);


$_SESSION["code"] = $code;

exit;


見にくかったらすみません025.gif

自分で作れば認証に使用する文字列を自由に指定できるのがいいですね003.gif




[PR]
by kstyle980 | 2014-07-14 13:46 | PHP