PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

| JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

以下の例では CAPTCHA の一般的な使用法を説明します。 CAPTCHA が正しく解決された場合にのみ、フォームから送信された内容を 処理します。

CAPTCHA を作成する

以下のコードは CAPTCHA を作成し、必要な情報を提供し、 その CAPTCHA を PNG 画像として取得します。

<?php
require_once 'Text/CAPTCHA.php';

// CAPTCHA のオプションを設定します (フォントが存在する必要があります!)
$imageOptions = array(
    
'font_size'        => 24,
    
'font_path'        => './',
    
'font_file'        => 'COUR.TTF',
    
'text_color'       => '#DDFF99',
    
'lines_color'      => '#CCEEDD',
    
'background_color' => '#555555'
);

// CAPTCHA のオプションを設定します
$options = array(
    
'width' => 200,
    
'height' => 80,
    
'output' => 'png',
    
'imageOptions' => $imageOptions
);
           
// 新しい Text_CAPTCHA オブジェクトを Image ドライバで作成します
$c Text_CAPTCHA::factory('Image');
$retval $c->init($options);
if (
PEAR::isError($retval)) {
    
printf('CAPTCHA 作成時にエラー: %s!',
        
$retval->getMessage());
    exit;
}

// CAPTCHA のパスフレーズを取得します
$_SESSION['phrase'] = $c->getPhrase();

// CAPTCHA 画像を (PNG 形式で) 取得します
$png $c->getCAPTCHAAsPNG();
if (
PEAR::isError($png)) {
    echo 
'CAPTCHA 作成時にエラー!';
    echo 
$png->getMessage();
    exit;
}
file_put_contents(md5(session_id()) . '.png'$png);
?>

CAPTCHA を使用してフォームのセキュリティを確保する

以下の例では、CAPTCHA が正しく解決されたかどうかを確認する機能を 実装しています。リクエスト間で情報を保持し続けるため、ここでは CAPTCHA の文字列をセッション変数に格納しています。いったん CAPTCHA が解決された後は、セッション ID の再利用を避けるために このセッション変数を消去しておくことが大切です。

<?php
session_start
();
$ok false;
$msg '下の画像の中の文字列を入力してください!';
if (
$_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset(
$_POST['phrase']) && is_string($_POST['phrase']) && isset($_SESSION['phrase']) &&
        
strlen($_POST['phrase']) > && strlen($_SESSION['phrase']) > &&
        
$_POST['phrase'] == $_SESSION['phrase']) {
        
$msg 'OK!';
        
$ok true;
        unset(
$_SESSION['phrase']);
    } else {
        
$msg 'もう一度入力してください!';
    }
    
unlink(md5(session_id()) . '.png');
}
print 
"<p>$msg</p>";

if (!
$ok) {
    
// 上の例で見たようにして CAPTCHA を作成し、
    // クライアントに送信します
}
?>

ひととおり完全に動作するサンプルは、配布パッケージ内の CAPTCHA_test.php を参照ください (GD および TTF のサポートが必要です)。

忘却曲線を使ってこの知識を確実に記憶に残す

フォーラムで「」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | 」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: