唯我独走中 -2ページ目

PHPでCAPTCHA(画像認証) Securimageのインストールから設定(基礎)

久しぶりのブログですが、メモ下記ですので読み飛ばしてください。

Securimageのより詳しいインストールから設定のが見つからなかったので備忘録的に。


フォームなどのスパム対策で見かけたりすと思いますが、このSecurimageはかなり使えると思います。こちらで画像を用意する必要もありません。勝手にやってくれます。

インストール

こちら からできます。

現在はVersion 3.5

zip downloadからダウンロードします。ダウンロードして解凍したら、基本的に必要ファイルは

securimage.php
securimage_show.php
AHGBold.ttf
/images/refresh.png

これを同じフォルダ内に置きます。4つあれば十分ですが、後のは必要に応じてお使いください。


設定ですが、securimage_show.php の

$img = new securimage();
 この間に記述していきます。
$img->show();

[securimage_show.php]
 $img->image_width = 160;
 $img->image_height = 50;
 $img->num_lines = 4;

[sample1.php]
<?
session_start();

$gazou = isset($_POST['gazou']) ? $_POST['gazou']:null;

if($gazou != null){
require_once 'securimage.php';
$img = new securimage();
if ($img->check($gazou) == false){
$gazou = 2;
}else{//画像認証が成功の場合
echo "認証しました<br><br><a href=\"./sample1.php\">もう一度</a>";
exit;
}
}

?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=euc-jp" />
<title>画像認証 サンプル1</title>
</head>
<body>
<table cellpadding="5" cellspacing="0" border="3" bordercolor="#cccccc">
<form action="" method="post">
<tr><td>画像認証</td>
 <td>
<? if($gazou == 2){echo "<p style=\"text-align:center;margin-top:0;\"><font color=\"red\">文字列が違います!</font></p>";}?>
<img src="./securimage_show.php?sid=<?php echo md5(uniqid()) ?>" id="siimage">
<a tabindex="-1" style="border-style: none;" href="#" title="画像を更新する" onclick="document.getElementById('siimage').src = './securimage_show.php?sid=' + Math.random(); this.blur(); return false">
<img src="refresh.png" width="25" height="25" alt="Reload Image" onclick="this.blur()" align="bottom" border="0"></a>
<input type="text" name="gazou" id="gazous" size="10" maxlength="6" style="ime-mode: inactive;">
</td>
<tr><td colspan="2" align="center"><input type="submit" value="認証する"></td>
</form>
</table>
</body>
</html>


サンプル1

画像の再読み込みも出来るので便利です。


[securimage_show2.php]
$img->image_width = 160;
$img->image_height = 50;
$img->num_lines = 0;
$img->image_bg_color = new Securimage_Color("#000");
$img->text_color = new Securimage_color("#fff");
$img->code_length = 4;

[sample2.php]
sample1.phpと同じです。


サンプル2

バックの色と文字の色・文字数を変更しました。

詳しい説明はしませんが、登録フォームやコメント入力フォームに使えると思います。
また、javascriptでバリディーション(入力チェック)を入れてやれば完成度は上がります。

認証が成功した場合にLocationで飛ばしてやれば完成。


こちらを参考にさせてもらいました。
PHPでCAPTCHA(画像認証) Securimageの使い方


ただ、画像の文字には大文字・小文字が使われていますが
なぜだか大文字のところを小文字で書いても認証されます。そうゆう仕様なのかもしれません。
そういった意味では完璧を求める認証には向いてないのかな?
しかし、スパム対策には有効かと