cafemocha

cafemocha

ホームページ制作 Webデザイン ブログデザイン Web構築 Android linux PHP パソコン情報 ブログ 掲示板

PHPで画像認証をする

ユーザ登録時などに画像に埋め込まれたコードを入力させてボットなど機械的に登録することを防ぐための機能です。
PHPで画像認証をするには、以下のプログラムをダウンロードします。
ダウンロードはこちらから

サンプルはこちらから


[カスタマイズ]
securimage_show.php でカスタマイズが可能です

[設定内容]
1.フォント指定
$img->ttf_file = './Quiff.ttf';

2.表示モード変更
$img->captcha_type = Securimage::SI_CAPTCHA_MATHEMATIC;

3.大文字小文字区別しない
$img->case_sensitive = true;

4.キャプチャ画像の高さと幅
$img->image_height = 100;
$img->image_width = 300;

5.揺らぎ度(数字が高くなると見づらい)
$img->perturbation = 0.75;

6.背景色
$img->image_bg_color = new Securimage_Color("#0099CC");

7.文字色
$img->text_color = new Securimage_Color("#EAEAEA");

8.文字に被せる線の数br> $img->num_lines = 8;

9.文字に被せる線の色
$img->line_color = new Securimage_Color("red");

10.画像タイプ(SI_IMAGE_JPEG: jpegとして処理)
$img->image_type = SI_IMAGE_JPEG;

11.署名
$img->image_signature ="testtesttesttesttest";

12.署名カラー
$img->signature_color = new Securimage_Color("#ffffff");

13.文字の透過
$img->use_transparent_text = true;

14.透過度
$img->text_transparency_percentage = 30;

15.辞書利用(ランダムな文字ではなく、英単語を出力します)
$img->use_wordlist = true;

16.出力文字指定(アルファベットのみ)
$img->charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

17.文字数
$img->code_length = 10
$img->code_length = rand(6,7);

18.ノイズ
$img->noise_level = 5;

19.ノイズの色
$img->noise_color = $img->text_color;

20.背景画像の利用(backgroundsフォルダ参照)
$img->show('backgrounds/bg5.jpg');



[ソース]
<?php session_start() ?>
・・・
省略
・・・

以下の認証コードを入力してください(cafemocha7.com)
<!-- 入力フォーム -->
<form action="./test1.html" method="post">>
    <p>
    <!-- secureimage_show.phpを呼ぶ(イメージ画像表示) -->
    <img id="captcha" src="./securimage/securimage_show.php" alt="captcha image">
    </p>

    <p>
    <!-- コード入力フォーム -->
    <input type="text" name="captcha_code" size="10" maxlength="6">
    </p>

    <p>
    <!-- 見づらい場合の、イメージを変更するボタンを追加 -->
    <a href="#" onclick="document.getElementById('captcha').src = './securimage/securimage_show.php?' + Math.random(); return false">【認証コードを変更】</a>
    </p>

    <p>
    <!-- submit ボタン -->
    <input type="submit" value="OK">
    </p>
</form>


<p>
<?php
//入力があった場合のみ処理する
if(!empty($_POST['captcha_code'])){
      // secureimage.phpをインクルードする
      include_once("./securimage/securimage.php");
      echo "[認証結果] ";
      // Securimageのオブジェクトを作成する
      $securimage = new Securimage();
      // Securimageオブジェクトの持つcheckメソッドで入力が正しいかをチェック
      if ($securimage->check($_POST['captcha_code']) == false) {
            echo "認証コードが間違っています";
            exit;
      } else {
            echo "認証コード認識しました";
            exit;
      }
}
?>
</p>