メールフォームプロCGI(このサイトのものです。)
でGoogle reCAPTCHAを設定したいのですが、サーバー側の設定方法がわかりません。
ネットで調べてPHPのやり方はヒットするのですが、CGIのやり方が見つからず困っています。
やってみたことは
・キーの取得
・問い合わせフォームのhtmlファイルに、チェックボックスを配置
・同ファイルにJavaScriptを記載
この後のサーバの設定が知りたいです。
(OS:windows10)
CGIに直接コードを記載するようなのですが、どなたか教えていただきたくよろしくお願いします。
※当方、Perlの知識が皆無です。
CGIのファイルは下記の二つだと思うのですが、
config.cgi
mailformpro.cgi
中身を見る限り、config.cgiのほうにのシークレット キーなどを追記するのではと思っています。
ちなみにPHPファイルを設置してみると、下記のエラーが出てしまいます。
「サイト所有者のエラー
サイトキーのドメインが無効」
追記*******
お問い合わせフォームのhtmlファイルの<head>内に下記を追記
<script src="https://www.google.com/recaptcha/api.js"></script>
上記と同じ、お問い合わせフォームのhtmlファイルの送信ボタンの前の行に下記を追記
<div class="g-recaptcha" data-sitekey="[****************]"></div>
mailformpro/config.cgi に
#!/usr/bin/perl use strict; use CGI; use LWP::UserAgent; use JSON::Parse; my $secret_key = '[*************************]'; my $url = 'https://www.google.com/recaptcha/api/siteverify'; my $cgi = CGI->new(); my $ua = LWP::UserAgent->new(); my $recaptcha_response = $cgi->param('g-recaptcha-response'); my $remote_ip = $ENV{REMOTE_ADDR}; my $response = $ua->post( $url, { remoteip => $remote_ip, response => $recaptcha_response, secret => $secret_key, }, ); if ( $response->is_success() ) { my $json = $response->decoded_content(); my $out = parse_json($json); if ( $out->{success} ) { # 正常処理 } }
※階層は、contact/index.html ←お問い合わせフォーム
contact/mailformpro/config.cgi ←サーバー側の設定を行ったファイル
となっています。
回答2件
あなたの回答
tips
プレビュー