メールフォームは たしかこれを使った
www.php-factory.net
reCaptcha
「私はロボットではありません」というやつ
reCAPTCHA: Easy on Humans, Hard on Bots
Googleアカウントにログインした状態で上記にアクセスし、
「reCAPTCHA v2」を選択して登録し、APIキーを取得。
あとは下記サイトに従って、、
liapoc.com
送信ボタンにdisabled属性をつけておくのは、
<div class="g-recaptcha" data-callback="clearcall" data-sitekey="ここにサイトキーをいれる"></div> <input type="submit" class="submitBtn" name="button" value="送信" disabled> </form> <script type="text/javascript"> function clearcall(code) { if(code !== ""){ $(':submit[name=button]').removeAttr("disabled"); } } </script>
この部分ですね。recaptchaにdata-callback="clearcall"というのをつけておいて、
jQueryで外してあげると。
disabledのCSSは以下のように
input.submitBtn:disabled{ background-color: #aaa; cursor:not-allowed; }
追記
phpが上記サイトのやつだと動かなかったので、以下のやり方で
<?php function checkReCaptcha(){ $url = "https://www.google.com/recaptcha/api/siteverify"; $request = implode("&", [ "secret=".urlencode("シークレットキー"), "response=".urlencode($_POST["g-recaptcha-response"]) ]); $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $request); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); return json_decode($response); } $gResponse = checkReCaptcha(); if ( $gResponse->success ) { //メール送る }else{ //エラー } ?>
参考
mofg.net