• 検索結果がありません。

簡単に素敵なキャプチャーを設置できるphpライブラリSecurimageの設置方法 | aoringo works

N/A
N/A
Protected

Academic year: 2021

シェア "簡単に素敵なキャプチャーを設置できるphpライブラリSecurimageの設置方法 | aoringo works"

Copied!
10
0
0

読み込み中.... (全文を見る)

全文

(1)

a o r i n g o w o r k s

簡単に素敵なキャプチャーを設置できるphpライブラリSecurimageの設置⽅法

⾃作フォームを作る必要があったのですが、wordpressプラグインで利⽤するにはちょっと痒いところに⼿ が届かないところが多く・・・⼿ごろなものを探していました。

Securimage PHP Captcha?|?Free Captcha Script

Securimage is an open-source free PHP CAPTCHA script for generating complex images and CAPTCHA codes …

⼿軽に導⼊・カスタマイズできるキャプチャです。 Securimage PHP Captcha | Download

ダウンロードはこちらから。とりあえず、素直に最新バージョンを導⼊してみました。

内容物はこんな感じ。audioやbackgroundsなんてディレクトリは設定によって利⽤しないのでお好みでどう ぞ。全てぶっこみます。

(2)

とりあえずこういう風な構成にしました。 利⽤⽅法は簡単。 と記述するだけです。securimage̲show.phpにキャプチャに必要な設定を記述し、それを画像として表⽰ する形となります。簡単! さて、では早速これを良い感じにカスタマイズしていきましょう。securimageディレクトリの中にある securimage̲show.phpを開きます。 コメントアウトされている部分、これが設定となります。コメントアウトを解除してそれぞれでよろしくやっ てくれよ、ということなんですね。粋です。 最⼩限のコードを抜き出すと でOKっぽいです。

設定

メモついでに設定をまとめます。 フォント指定。

1 <img src="./securimage/securimage_show.php" alt="CAPTCHA Image" />

1 require_once dirname(__FILE__) . '/securimage.php'; 2 $img = new Securimage();

(3)

↓ 表⽰モード変更 この場合は計算式。答えを出すタイプですかね。 ⼤⽂字⼩⽂字区別しない 回答率が上がるのでtrueにしないほうがよいとコメントされてますね。 キャプチャ画像の⾼さと幅 幅の指定に使われているのは⾼さと「M̲E」の掛け算だそうです。M̲Eは⾃然数ってやつらしいです。よく

1 $img->ttf_file = './Quiff.ttf';

1 $img->captcha_type = Securimage::SI_CAPTCHA_MATHEMATIC;

1 $img->case_sensitive = true;

1 $img->image_height = 90;

(4)

わかんないです。 PHP: 定義済み定数 – Manual M̲E = 2.7182818284590452354 = e(⾃然対数の底) 揺らぎ度 数字が⾼くなるほどはちゃめちゃな感じになるそう。 試しに1で設定してみました。 ぐんにゃりしてらっしゃいます。 背景⾊ ⽂字⾊ 1 $img->perturbation = .75;

1 $img->image_bg_color = new Securimage_Color("#0099CC");

(5)

⽑の数 三⼗本にしてみました。 ⽑の⾊ ⾚にしたつもりだけれどちゃんと処理できませんでした。英単語での指定はだめっぽいですね。 画像タイプ jpegとして処理します。 署名 署名カラー 1 $img->num_lines = 8;

1 $img->line_color = new Securimage_Color("red");

1 $img->image_type = SI_IMAGE_JPEG;

1 $img->image_signature ="testtesttesttesttest";

(6)

⽂字の透過 透過度 辞書利⽤ ランダムな⽂字ではなく英単語を出⼒します。個⼈的には英単語になじみはないので利⽤しないかなと思いま す。 出⼒⽂字指定 ⽇本語は指定できませんでした・・・。

1 $img->use_transparent_text = true;

1 $img->text_transparency_percentage = 30;

1 $img->use_wordlist = true;

(7)

⽂字数 randを利⽤すれば毎回ランダムな⽂字数のコードを出⼒できますね。 ノイズ ノイズの⾊ 機械読み取りの難易度を上昇させる効果がありそうです。また、ノイズの⾊を⽂字と同じ⾊にするとさらに 効果的でしょう。 背景画像の利⽤

フォーム設置

クイックガイドを参考にコードを記述。とりあえずそのままコピペ。

1 $img->code_length = rand(5,6);

1 $img->noise_level = 5;

1 $img->noise_color = $img->text_color;

1 $img->show('backgrounds/bg3.jpg');

1 <a onclick="document.getElementById('captcha').src = './securimage/securimage_show.php?' + Math.random(); return false" href="#">[ Different Image ]</a>

(8)

[ Different Image ]をクリックする事で画像を⼊れ替えることができます。便利すなあ。 フォームのテストコードをとりあえず こういう形にしてみました。 さらに、クイックガイドを読むと画像を出⼒する前に を加えよ、とのこと。 あとは$̲POSTと$̲SESSIONをvar̲dumpで表⽰させます。 ちゃんと表⽰されてますね。 $̲SESSION["securimage̲code̲disp"]が実際ディスプレイに表⽰されているコードだということがわかり ます。これ、⼀個前のコードが出てるようですね。これでコードを記⼊し送信すると、

1 <form action="" method="POST">

2 <img id="captcha" src="./securimage/securimage_show.php" alt="CAPTCHA Image" /> 3 <input type="text" name="captcha_code" size="10" maxlength="10" />

4 <a href="#" onclick="document.getElementById('captcha').src = './securimage /securimage_show.php?' + Math.random(); return false">[ Different Image ]</a> 5 <br>

6 <input type="submit" value="enter"> 7 </form>

1 <?PHP session_start(); ?>

1 <?PHP session_start(); ?> 2 <form action="" method="POST">

3 <img id="captcha" src="./securimage/securimage_show.php" alt="CAPTCHA Image" /> 4 <input type="text" name="captcha_code" size="10" maxlength="10" />

5 <a href="#" onclick="document.getElementById('captcha').src = './securimage /securimage_show.php?' + Math.random(); return false">[ Different Image ]</a> 6 <br>

7 <input type="submit" value="enter"> 8 </form> 9 <br /> 10 post<br> 11 <?php var_dump($_POST); ?><br> 12 session <br> 13 <?php var_dump($_SESSION) ?><br>

(9)

合いました。 これを組み合わせて認証処理を記述します。 ・・・・・ちなみにこれ、だめな例です。 こういう風にコードを変えて、空欄のままポストすると、 通っちゃうんです。string型の場合、「未記⼊」という形でデータがあることになるようですね。めんどい です。というわけでこうしましょう。 ここまで⽤⼼する必要があるのか?というのもありましょうが、これくらいやれば安⼼です。ワーニングも 回避できますしおすし。 さらに、securimage⾃⾝のエラーチェックコードがありますのでこれも追加します。 最終的な全体のコードはこちら↓ 1 <?php

2 if (isset($_POST['captcha_code'])) {

3 if ($_POST['captcha_code'] == $_SESSION["securimage_code_disp"]["default"]) { 4 echo "okok";

5 } 6 } 7 ?>

1 <?php

2 if (isset($_POST['captcha_code'])) { 3 echo "okok";

4 if ($_POST['captcha_code'] == $_SESSION["securimage_code_disp"]["default"]) { 5

6 } 7 } 8 ?>

1 <?php if ($_POST['captcha_code'] !== "" && !isset($_POST['captcha_code'])) { if

($_POST['captcha_code'] == $_SESSION["securimage_code_disp"]["default"]) { echo "okok"; } } ?>

1 <?php include_once $_SERVER['DOCUMENT_ROOT'] . '/test/securimage/securimage.php'; $securimage =

new Securimage(); if ($securimage--->check($_POST['captcha_code']) == true) { 2 }

3 ?>

1 <?PHP session_start(); ?>

(10)

update: 2013/03/29 タグ: php, wordpress, まとめ, カスタマイズ, キャプチャ, プラグイリ | php

前のページ 次ページ

Copyright aoringo works. WordPress CMS Theme WSC Project. 私の環境で記述されているので⼿直ししてください。

これらを通してようやく認証完了、となります。

・・・・しかしこれセッションスタート必要なのか・・・? どうも機械翻訳だとここらへんの理解が難し いですね。

参考

PHPでCAPTCHA(画像認証) Securimageの使い⽅ – hrendohの⽇記 Securimage PHP Captcha | Quickstart Guide

Securimage PHP Captcha | Customizing Securimage

4 <a onclick="document.getElementById('captcha').src = './securimage/securimage_show.php?' + Math.random(); return false" href="#">[ Different Image ]</a>

5

6 <input type="submit" value="enter" /></form> 7 <pre> 8 post 9 10 <?php var_dump($_POST); ?> 11 12 session 13 14 <?php var_dump($_SESSION) ?> 15

16 <?php if ($_POST['captcha_code'] != "" && isset($_POST['captcha_code'])) { if

($_POST['captcha_code'] == $_SESSION["securimage_code_disp"]["default"]) { include_once

$_SERVER['DOCUMENT_ROOT'] . '/test/securimage/securimage.php'; $securimage = new

Securimage(); if ($securimage--->check($_POST['captcha_code']) == true) { 17 echo "okok";

18 } 19 } 20 } 21 ?>

参照

関連したドキュメント

本装置は OS のブート方法として、Secure Boot をサポートしています。 Secure Boot とは、UEFI Boot

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

1 単元について 【単元観】 本単元では,積極的に「好きなもの」につ

適合 ・ 不適合 適 合:設置する 不適合:設置しない. 措置の方法:接続箱

○事業者 今回のアセスの図書の中で、現況並みに風環境を抑えるということを目標に、ま ずは、 この 80 番の青山の、国道 246 号沿いの風環境を

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から

大村 その場合に、なぜ成り立たなくなったのか ということ、つまりあの図式でいうと基本的には S1 という 場

TL=5   :防音シート等簡易な防音材を通常に設置したもの、若しくは一般の板塀など  出典: