原理:画像を生成し、画像に表示されている文字をSESSIONに保存します。 ログイン時に、入力されたチェックコードがSESSION内のチェックコードと同じかどうかを判定します。チェックコードサム 画像ファイル 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 も使用できますsession_start() が削除されました
// COOKIE は安全な検証ができないため推奨されません。
$h_img = imagecreate(40,17);
$c_black = ImageColorAllocate($h_img, 0,0,0);
$c_white = ImageColorAllocate($h_img, 255,255,255); $h_img, 1, 1, 350, 25, $c_black);
imagearc($h_img, 200, 15, 20, 20, 35, 190,
imagestring($h_img, 5, 2, 1, $login_check_number, $c_white);
ImagePng($h_img);
die(); 使用法:
HTML ファイルにを追加します。次のコードをログイン検証 PHP ページに追加します (注: SESSION が使用されているため、コードを追加する前に出力されます)
//$number は入力した確認コードです。 Value
include_once("./checkNumber.php")
//チェック コード
if ($number != $login_check_number || empty($number))
{
print("チェックコードが間違っています!")
die();
*/
?>
SESSION 使用時の問題:
SESSION の有効期限が切れた後にログイン ページを開いてログインすると、ログインが失敗します。
using 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 == "")
>