このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0095

マルチバイト文字CAPTCHAヘルパー

 マルチバイト文字CAPTCHAヘルパーは、CodeIgniterにデフォルトで備わっている
「CAPTCHAヘルパー」のマルチバイト文字対応版です。
 日本語などのマルチバイト文字の「CAPTCHA」画像を生成することができるようになります。

 使い方は、ほとんどCodeIgniterの「CAPTCHAヘルパー」と同様です。
 ここでは、マルチバイト文字CAPTCHAヘルパー特有の設定方法などを説明しています。

マルチバイト文字CAPTCHAヘルパーの準備

 フォントファイル

 マルチバイト文字CAPTCHAヘルパーでは、フォントファイルの指定が必須となっています。

 RedHat系のLinuxでのフォントファイルのインストールは以下のようにします。

    # yum install fonts-japanese
    # yum install ipa-gothic-fonts ipa-mincho-fonts
    # yum install ipa-pgothic-fonts ipa-pmincho-fonts

 フォントファイルは「/usr/share/fonts/」ディレクトリ配下に、拡張子「.ttf」としてインストールされます。


 言語ファイル(文字プール)

 CAPTCHA画像内に表現する文字列を指定せず、ランダムに取得する場合は、予め「文字プール」を 「application/third_party/info.ci-guide/language/[言語]/mb_captcha_lang.php」言語ファイルで
設定します。

  • application/third_party/info.ci-guide/languages/japanese/mb_captcha_lang.php
  • <?php

    $lang['pool'] = 'あいうえおかきくけこさしすせそ'
                  . 'たちつてとなにぬねのはひふへほ'
                  . 'まみむめもやゆよわをん';
    

 この例では、日本語の「ひらがな」からランダムに文字列を取得できるように設定しています。
 日本語以外のマルチバイト文字を取得するには、「application/third_party/info.ci-guide/languages/」ディレクトリに 対象の言語サブディレクトリを作成し、その言語ディレクトリに「mb_captcha_lang.php」を作成します。


 パッケージパス

 パッケージパスを「application/config/autoload.php」 自動ロード設定ファイルで設定するか、
「CI_Loader」コアクラスの「add_package_path()」 メソッドで「info.ci-guide」パッケージのパスを設定します。

  • application/config/autoload.php
  • $autoload['packages'] = array(APPPATH . 'third_party/info.ci-guide');
  • add_package_path()
  • $this->load->add_package_path(APPPATH . 'third_party/info.ci-guide');

マルチバイト文字CAPTCHAヘルパーのロード

 「 CI_Loader 」クラスの「 helper() 」メソッドでロードします。

    $this->load->helper('mb_captcha');

マルチバイト文字CAPTCHAヘルパーの関数

mb_create_captcha($data = '', $img_path = '', $img_url = '', $font_path = '')

 「CAPTCHAヘルパー」の 「create_captcha()」 関数の利用方法と同様になります。
 詳しくは、CAPTCHAヘルパー」のページを参照してください。

    $mb_captcha = mb_create_captcha(
        NULL,
        'images/captcha/',
        '/images/captcha/',
        '/usr/share/fonts/ipa-gothic/ipag.ttf'
    );
    print_r($mb_captcha);
    /*
    Array
    (
        [word] => 
        [time] => 
        [image] => <img src="/images/captcha/.jpg" width="150"
                                            height="30" style="border:0;" alt=" " />
    )
                            
    */
  • word:
  • time:
  • image:
    $data = array(
        'word' => '日本語',
        'img_path' => 'images/captcha/',
        'img_url' => '/images/captcha/',
        'font_path' => '/usr/share/fonts/ipa-gothic/ipag.ttf'
    );
    $mb_captcha = mb_create_captcha($data);
  • word:
  • time:
  • image: