数日前、DEV-CLUB が検証コードのログイン認証を実装しているのを目にしました。昨晩、PHP で実装されました。皆さん、polygame@163.net について話し合うことを歓迎します
原則: 画像を生成し、画像に表示されている文字を SESSION に保存します。入力されたチェック コードがログイン時の SESSION のチェック コードと同じであるかどうかを確認します。
デモのアドレス:
http://www.bingdu.net/bbs/
これはチェック コードを生成するファイル checkNumber.php です。
session_start();
if($act == "init")
{
Header("Content-type: image/png");
srand(microtime() * 100000);
$login_check_number = strval(rand("1111","9999"));
session_register("login_check_number");
//ここではチェックコードを保存するためにSESSIONが使用されています。
//もちろんCOOKIEも使用できます
//setcookie( "login_check_number",$login_check_number);
//最初の行の session_start() を削除します;
//COOKIE を使用すると安全な検証ができないため、COOKIE の使用は推奨されません。
$ h_img = imagecreate(40,17) ;
$c_black = ImageColorAllocate($h_img, 0,0,0);
$c_white = ImageColorAllocate($h_img, 255,255,255);
imageline($h_img, 1, 1, 350, 25) , $c_black);
imagear c( $h_img, 200, 15, 20, 20, 35, 190, $c_white);
imagestring($h_img, 5, 2, 1, $login_check_number, $c_white);
ImagePng( $h_img);
ImageDestroy($h_img );
Die();
}
/*
使用法:
AddHTML ファイル内で、ログイン検証 PHP ページに次のコードを追加します (注: SESSION が使用されているため、コードを追加する前に出力はありません)
//$number は入力した検証コードの値です
include_once( "./checkNumber.php") ;
//チェックコードをチェック
if($number != $login_check_number || empty($number))