認証コード
数日前、DEV-CLUB が認証コードによるログイン認証を実装しているのを目にしました。昨晩、PHP で実装されました。皆さん、私と話し合うことを歓迎します
原則: 画像を生成し、画像に表示されている文字を保存します。 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 の使用は推奨されません。安全な検証は許可されていません。
$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);
imagearc($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();
}
/*
使用法:
Add
ログイン検証 PHP ページに次のコードを追加します (注: SESSION が使用されるため、コードを追加する前に出力はありません)
//$number は入力した確認コードの値
include_once("./checkNumber.php");
//チェックコードを確認します
if($number != $login_check_number || empty($number))
{
print("チェックコードが間違っています! ");
die();
}
*/
?>
SESSION 使用時の問題:
SESSION の有効期限が切れた後、ログインする前にログイン ページを開くと、ログイン
COOKIE を使用する際の問題:
COOKIE はクライアントに保存されるため、COOKIE を使用する場合は使用しないことをお勧めします。
VBB フォーラムの場合は、checkNumber.php を保存した後、MYSQL データベースのタイトルを変更します。テンプレートデータテーブルをlogincode forumhome_logincode username_loggedoutのテンプレートコンテンツに追加します。
次にmember.phpの
if($action=="login")
の後に
を追加します。 //チェックコードを確認します
include_once("./checkNumber.php") );
if($number != $login_check_number || $number == "") {In Print ("認証コードが間違っています!");