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
Dockerの利用していないゴミを掃除しディスクスペースを解放するいくつかのやり方を紹介
- article
Next.js のバンドルサイズを可視化する@next/bundle-analyzer の紹介
- article
VSCodeでTypescriptファイルのimport補完で相対パスではなくエイリアスするための設定
- article
UUIDより短いユニークなIDを生成できるnpmライブラリnanoidの使い方
- article
【解決方法】TypeScript発生したTS2564 エラーの対処
- article
express で IP を取得する際などに利用する req.connection 非推奨(deprecated)の対処