Windows - 画像認証「Text_CAPTCHA」使用方法!

Updated:


※この記事は14年以上前に投稿されたもので、情報が古い可能性があります。

前回、Windows環境に「Text_CAPTCHA」をインストールしたので、今回は使ってみました。 ↓インストール方法はこちら↓ Windows - 画像認証「Text_CAPTCHA」インストール!

作業記録Permalink

【前提条件】

  • OSはWindowsXP(SP3)
  • WebサーバはApache2.2
  • PHPは5.2.14

1.作業用ディレクトリの作成Permalink

Webサーバのドキュメントルートに「Text_CAPTCHA」用の作業ディレクトリを作成します。 当方は以下のようにしました。

ドキュメントルート
  |
  +captcha(Text_CAPTCHA用ディレクトリ)
    |
    +fonts(使用するフォントファイルを格納するディレクトリ)
    |
    +img (作成された画像ファイルを格納するディレクトリ)

2.フォントの準備Permalink

画像認証に使用するフォントを先ほど作成した「fonts」ディレクトリに配置します。 フォントは自分の気に入ったものをネットで探してもよいし、Windowsのフォントフォルダにあるものを使用してもよいです。 当方は、オーソドックスにWindowsのフォントフォルダの「COUR.TTF」を使用します。 (Windowsのフォントフォルダからコピーするにはコマンドプロンプト[COPYコマント]を使用しないとコピーできません)

3.PHPソース作成Permalink

ネットで調べると非常に色々とサンプルがあります。 適当なものを用意します。 当方は以下のようにしました。 (ファイル名は [適当].php)

<?php

session_start();

//画像のパス
$img_dir   = "captcha/img/";    // ← 画像を格納するディレクトリを指定
$file_path = $img_dir.md5(session_id()).".png";

//POST送信があれば認証
if($_SERVER['REQUEST_METHOD'] == "POST")
{
    if($_POST['input_captcha_auth'] == $_SESSION['captcha_auth'])
    {
        //OK時の処理を記入
        $status = TRUE;
    }else{
        //NG時の処理を記入
        $status = FALSE;
    }

    if(is_file($file_path))
    {
        unlink($file_path);
    }

}else{

    //CAPTCHA
    require_once "Text/CAPTCHA.php";

    $optins = array(
        'width'        => 150,  // ← 表示する画像の横幅を指定
        'height'       => 60,   // ←   〃    高さを指定
        'output'       => 'png',
        'imageOptions' => array(
            'font_size'        => 20 ,
            'font_path'        => 'captcha/fonts/', // ← フォントのあるディレクトリを指定
            'font_file'        => 'COUR.ttf',       // ← フォントファイル名を指定
            'text_color'       => "#FFFFFF",        // ← 画像に表示される文字の色を指定
            'lines_color'      => "#000000",        // ←   〃     ラインの色を指定
            'background_color' => "#666666")        // ← 画像の背景色を指定
    );

    $captcha = Text_CAPTCHA::factory('Image');
    $captcha->init($optins);
    //画像を生成
    file_put_contents($file_path,
    $captcha->getCAPTCHAAsPNG());
    //画像文字列をセッションに格納
    $_SESSION['captcha_auth'] = $captcha->getPhrase();
}

//画像の掃除(POST未送信の画像)
$dir =  opendir($img_dir);

    while(($file_list = readdir($dir)))
    {
        $file = $img_dir .$file_list;

            if(is_file($file))
            {
                if(filemtime($file) < time()-3600)
                {
                    unlink($file);
                }
            }
    }
?>
<!DOCTYPE HTML>
<html>
<meta charset=Shift-JIS>
<title>CAPTCHA TEST</title>
<?php
if(is_file($file_path))
{
    print("<img src=\"".$file_path."\">\n"
         ."<form method=\"post\" action=\"\">\n"
         ."<p><input type=\"text\" name=\"input_captcha_auth\"></p>\n"
         ."<p><input type=\"submit\" name=\"button\" value=\"送信\" /></p>"
         ."</form>\n");
}
?>
</html>

4.確認Permalink

前述のphpファイルをWebサーバのドキュメントルートに配置して表示させます。 うまくいけば以下のような画面が表示されるはずです。

TEXT_CAPTCHA_1


今回のWindowsでの試行作業は以上です。

ではまた。





 

Sponsored Link

 

Comments