NPO法人の設立はお任せ下さい

NPO法人とはという基本的内容から実際のNPO法人設立まで広くお手伝いいたします。これからNPO法人をお考えの方はオススメ。NPO法人とはNon Profit Organizationの略であり、特定非営利活動法人を指します。法人なので当然に登記され、独立した人格として活動ができるようになります。

アルバイトをお探しならアルバイトスタイルへ。アルバイトを探したい方、アルバイトを探している方は必見です。
NPO法人をこれから設立したいとお考えなら自分で設立するNPO法人へ。都道府県ごとのNPO法人設立情報などを提供。NPO法人証明書も発行
株式会社をこれから設立したいとお考えなら会社設立webへ。都道府県ごとの会社設立専門家を紹介しております。

Text_CAPTCHA

CAPTCHA (Completely Automated Public Turing tests to tell Computers and Humans Apart : コンピュータと人間を 区別するための、完全に自動化された公開チューリングテスト) を実装したものです。

導入

このパッケージは、CAPTCHA (Completely Automated Public Turing tests to tell Computers and Humans Apart : コンピュータと人間を 区別するための、完全に自動化された公開チューリングテスト) を作成する機能を提供します。以下のような機能が含まれます。

このパッケージは CAPTCHAs を作成します。 HTTP はステートレスなプロトコルなので、Web ページの安全性を 確保するために、このパッケージを使用してきちんと実装する 必要があります。 詳細な情報は 使用例を参照ください。

現時点では、グラフィカル CAPTCHA ドライバは Image_Text に依存しており、 これを使用するには PHP のコンパイル時に TTF サポートを組み込んでおく 必要があります。

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

例 56-1CAPTCHA を作成する

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


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

// CAPTCHA のオプションを設定します (フォントが存在する必要があります!)
$options = array(
    'font_size' => 24,
    'font_path' => './',
    'font_file' => 'COUR.TTF'
);
           
// 新しい Text_CAPTCHA オブジェクトを Image ドライバで作成します
$c = Text_CAPTCHA::factory('Image');
$retval = $c->init(200, 80, null, $options);
if (PEAR::isError($retval)) {
    echo 'CAPTCHA 作成時にエラー!';
    exit;
}

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

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

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

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


<?php
session_start();
$ok = false;
$msg = '下の画像の中の文字列を入力してください!';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['phrase']) && isset($_SESSION['phrase']) &&
        strlen($_POST['phrase']) > 0 && strlen($_SESSION['phrase']) > 0 &&
        $_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 のサポートが必要です)。

CAPTCHA およびその内部動作についての情報

Text_CAPTCHA は CAPTCHA に関する情報を提供し、 基底クラスで定義されているいくつかの関数によって、その内部機能への アクセスが可能となります。それらの関数の実装内容は、ドライバに依存します。