PHPでフォーム送信時のCAPTCHA(画像認証) を簡単に設置できる「Securimage」の使い方とサンプル

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
PHPでフォーム送信時のCAPTCHA(画像認証) を簡単に設置できる「Securimage」の使い方をメモしました。
最近良く、海外の変なところからのお問い合わせが多かったのでこのブログにも画像認証を設置してみました。
設定手順
securimageのサイトからダウンロードします。
https://www.phpcaptcha.org/download
ダウンロードしたファイルを解凍しsecurimageフォルダを任意のディレクトリへ移動します。
サンプルコード
index.php<?php
$error = '';
$mes = '';
if(isset($_POST['captcha_code'])){
session_start();
//画像の処理
if($_POST['captcha_code'] == ''){
$error = ' class=error ';
$mes = '画像認証を入力してください。';
}elseif($_POST['captcha_code'] != $_SESSION["securimage_code_disp"]["default"]){
$error = ' class=error ';
$mes = '入力された画像認証をご確認ください。';
}else{
$mes = '画像認証は正しく入力されました。';
}
}
//エスケープ
function h($str) {
return htmlspecialchars($str, ENT_QUOTES, 'UTF-8', FALSE);
}
?>
HTML
index.php<form action="" method="post">
<h1>sample form</h1>
<table>
<tr>
<th>画像認証</th>
<td><input type="text" name="captcha_code" value="" <?php echo h($error);?>></td>
</tr>
<tr>
<td colspan="2" class="box">
<img id="captcha" src="securimage/securimage_show.php" alt="CAPTCHA Image" />
<a href="#" onclick="document.getElementById('captcha').src = 'securimage/securimage_show.php?' + Math.random(); return false">画像変更</a>
</td>
</tr>
<tr>
<td colspan="2" class="box">
<input id="submit" type="submit" value="送信">
</td>
</tr>
</table>
<p><?php echo h($mes);?></p>
</form>
imgタグのsrcのパスと画像変更時のonclick時のパスをあわせるだけで簡単に動きます。
記事Article
もっと見る- article
2025年JavaScriptで使える時間操作ライブラリを比較!日付処理の最適解とは?
- article
NestJSでバリデーションエラーをログ出力する設定を紹介
- article
NestJSで作成したAPIのレスポンスヘッダーに付与されるx-powered-by: Express を消す方法を紹介
- article
Next.jsで環境変数に別の変数を利用し柔軟に管理するdotenv-expandの活用法を紹介
- article
【2025年3月版】Cursor ProとAPI利用比較。 Claude・GPT-4o・o1・GPT-4.5の損益分岐点と選び方
- article
フォーム入力情報からZodを利用してDTO作成しへ変換処理を実施するやり方を紹介