.htaccessでPHPのファイルアップロードサイズの上限値を変更
2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…

迷惑メールが増えてきたので、メールフォームに「reCAPTCHA v3」を設置したいとの相談を受けた際にPHPを使用して実装した手順をメモ。
まずはGoogle reCAPTCHAのサイト情報の登録画面にアクセスし、必要情報を入力。
送信ボタンを押した後に表示される「サイトキー」と「シークレットキー」を取得します。
※登録にはgoogleアカウントが必要です。
| 入力項目 | 入力内容 |
| ラベル | 管理用の任意の文字列を入力 |
| reCAPTCHAタイプ | 「スコアベース(v3)」を選択 |
| ドメイン | reCAPTCHA v3を使うサイトのドメインを入力 |
メールフォームの設置されてるページに「reCAPTCHA v3」用のjavascriptとinputタグを設置します。
<script src="https://www.google.com/recaptcha/api.js?render=サイトキー"></script>
<script>
grecaptcha.ready(function () {
grecaptcha.execute('サイトキー', { action: 'submit' }).then(function (token) {
document.getElementById('recaptcha_response').value = token;
});
});
</script>
<form action="sendmail.php" method="post">
<!-- reCAPTCHA v3 用タグ -->
<input type="hidden" name="recaptcha_response" id="recaptcha_response">
<!-- reCAPTCHA v3 用タグ -->
<dl>
<dt>お名前</dt>
<dd><input type="text" name="name"></dd>
<dt>メールアドレス</dt>
<dd><input type="text" name="email"></dd>
<dt>電話番号</dt>
<dd><input type="text" name="tel"></dd>
<dt>お問い合わせの内容</dt>
<dd>
<textarea name="content"></textarea></dd>
</dl>
<div><input type="submit" name="submit" value="入力内容を確認する"></div>
</form>
if(!empty($_POST['submit'])){
$secret_key = 'シークレットキー';
if(isset($_POST['recaptcha_response'])) {
$token = $_POST['recaptcha_response'];
}else{
$token = '';
}
$remote_ip = $_SERVER['REMOTE_ADDR'];
// トークンをGoogleに検証依頼
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secret_key}&response={$token}&remoteip={$remote_ip}");
$result = json_decode($response, true);
// スコアのしきい値(例:0.5以上で人間と判断)
if ($result["success"] && $result["score"] >= 0.5) {
// 通過処理 ここにメール送信処理などを記述
} else {
// botまたは不正なアクセスと判断 停止処理などを記述
}
}
「reCAPTCHA v3」の利用には費用が必要となります。
月間1万アクセスまでであれば無料で利用ができますが、以降は利用した量に応じて費用が請求されます。多くの中小企業サイトであれば無料枠内で問題なく運用は可能かと思いますが、運用してみたら想定外の費用が必要になった、という事のないよう、アクセス解析等を確認しながら、どの程度の費用が必要となるかを事前に確認しておくのが良いです。
ワードプレスを使用している場合はプラグインを使うことでより簡単に実装ができるようです。

2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…

2020.10.3
テキストエリア等で入力した文字の中にURLを含んでいた場合に、自動で認識してリンクタグを…

2024.03.30
外部ファイル(CSVファイル等)を読み込んでサイト内に表示する際に、保存時の文字コードが…

2020.12.5
メールフォームからメールを送信する際に、画像(ファイル)を添付できるようにしてほしいとの…

2023.12.2
ワードプレスの投稿のカテゴリー機能を、目的ごとに使い分けたいというご要望があった際に、カ…

2020.08.1
動画ファイルをCMS化して保存するときに、多くの場合はファイルパスをデータベース(MyS…

2022.09.24
パソコンやスマートフォンの戻るボタンを使って画面を戻す(ブラウザバックする)時があります…

2022.02.19
画像データ等をサーバーにアップロードする際、一点づつアップロードしても良いけれど、ファイ…

2020.08.15
フォームの入力値やURLのパラメータ等、文字列や数値を受け取る際に正規表現を利用してバリ…

2019.12.29
メールフォーム等での入力値チェック(バリデーション)。PHPの「preg_match」(…