ソースの表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ Share via Share via... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer Reddit Teams最近の変更Send via e-Mail印刷パーマリンク × 目次 日本語captcha作ったった 必要なもの 使い方 その他 « Portsにnetatalk 3.0.3がキタ━━━(゚∀゚)━━━ !!!!! BlogTNGに迷惑トラックバック除けを仕込む » 日本語captcha作ったった 「ギャラクシーS3のカスタムケースあるよ」(英語)というスパムコメントが死ぬほどウザい。一晩で500件も投稿すんな!クソチョンのガラクターなんて持ってねーし、買う気もねーよksg。iPhone関連のスパムはなく、なんでガラクターだけなんだよ。ステマしてんじゃねーよトンスル民族!! もうマジでげきオコスティックファイナリアリティぷんぷんドリーム状態なので、怒りのままにcaptchaプラグインのひらがな対応化改造を行った。外国人涙目だろうが、こんなクソみたいなサイトを見てる奇特な人は居ないだろうから気にしない。これでbotを誤魔化せるといいんだが…。 折角なのでパッチを公開しておく。 必要なもの CAPTCHA plugin 2013/04/29 15:50版以降 Unicode対応の日本語True Typeフォント(ライセンス的に画像化してもいいもの) ↓のパッチ captcha_ja.patch --- a/helper.php 2013-04-29 06:50:38.000000000 +0900 +++ b/helper.php 2013-05-05 19:55:44.000000000 +0900 @@ -88,7 +88,7 @@ } break; } - $out .= ' <input type="text" size="5" maxlength="5" name="'.$this->field_in.'" class="edit" /> '; + $out .= ' <input type="text" size="10" maxlength="10" name="'.$this->field_in.'" class="edit" /> '; // add honeypot field $out .= '<label class="no">Please keep this field empty: <input type="text" name="'.$this->field_hp.'" /></label>'; @@ -150,11 +150,18 @@ $numbers = md5($rand * $fixed); // combine both values // now create the letters +/* $code = ''; for($i=0;$i<10;$i+=2){ $code .= chr(floor(hexdec($numbers[$i].$numbers[$i+1])/10) + 65); } - +*/ + $strTable = 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゐゆゑよらりるれろわをん'; + $strLength = mb_strlen($strTable); + $code = ''; + for ($i=0;$i<10;$i+=2){ + $code .= mb_substr($strTable, hexdec($numbers[$i].$numbers[$i+1])%$strLength, 1); + } return $code; } @@ -203,7 +210,7 @@ } // draw the letters - for ($i = 0; $i < strlen($text); $i++){ + for ($i = 0; $i < mb_strlen($text); $i++){ $font = $fonts[array_rand($fonts)]; $color = imagecolorallocate($img, rand(0, 100), rand(0, 100), rand(0, 100)); $size = rand(floor($h/1.8),floor($h*0.7)); @@ -213,7 +220,7 @@ $cheight = $size + ($size*0.5); $y = floor($h / 2 + $cheight / 3.8); - imagettftext($img, $size, $angle, $x, $y, $color, $font, $text[$i]); + imagettftext($img, $size, $angle, $x, $y, $color, $font, mb_substr($text, $i, 1)); } header("Content-type: image/png"); 使い方 CAPTCHAプラグインをインストール CAPTCHAの種類を「Image」にする lib/plugins/captcha/fonts に最初から入っているフォントを使えない状態にする(拡張子を .ttf_ にするなど) ↑にある.ttfをランダムに選んで認証画像を作るので、非日本語フォントがあると正しく画像が生成されない。 lib/plugins/captcha/fonts に日本語フォントを置く ライセンスに注意。IPAフォント(IPAフォントライセンスv1.0準拠)あたりなら問題ないと思われる。 拙作パッチを当てる その他 「Image」以外では動作しません。 文字コードはUTF-8しか想定してないので、ブラウザによっては認証が通らない事があるかも? $strTable を書き換える事で、認証に使う文字を変えられる。小難しい漢字や似た漢字(「博」と「愽」とか)を入れれば更に効果的かも知れない(笑) Comments Name E-Mail Website 人間の証明として、ボックス内の全ての文字を入力してください。 この項目は空のままにして下さい:Preview Comment blog/2013/2013-05-05.txt 最終更新: 2015-01-06 11:51(外部編集)