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();
サンプル1
画像の再読み込みも出来るので便利です。
サンプル2
バックの色と文字の色・文字数を変更しました。
詳しい説明はしませんが、登録フォームやコメント入力フォームに使えると思います。
また、javascriptでバリディーション(入力チェック)を入れてやれば完成度は上がります。
認証が成功した場合にLocationで飛ばしてやれば完成。
こちらを参考にさせてもらいました。
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>
$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と同じです。
$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の使い方
ただ、画像の文字には大文字・小文字が使われていますが
なぜだか大文字のところを小文字で書いても認証されます。そうゆう仕様なのかもしれません。
そういった意味では完璧を求める認証には向いてないのかな?
しかし、スパム対策には有効かと