Contact form7でフォーム送信時に別サーバへもデータを送信する方法
2024/09/20
contact form7でフォーム送信時に別サーバーでフォーム内容をPOST送信したかった。以下に方法をメモ。
送信側
WordPressのテーマフォルダ内にあるfunctions.phpに以下を追記する。
add_action('wpcf7_mail_sent', 'gloc_wpcf7_insert_post', 10, 1);
function gloc_wpcf7_insert_post(){
$submission = WPCF7_Submission::get_instance();
if ( $submission ) {
$formdata = $submission->get_posted_data();
//var_dump($formdata); //$formdataの中にフォーム送信内容が入る
$url = 'http://test.com/get.php'; //受け取り先のURL
//$formdataのkeyは適宜書き換える
$query = array(
'name' => $formdata['name'],
'mail' => $formdata['mail'],
'pass' => $formdata['pass'],
);
//URLエンコードされたクエリ文字列を生成
$content = http_build_query($query, '', '&');
//ヘッダ設定
$header = array(
'Content-Type: application/x-www-form-urlencoded', //form送信の際、クライアントがWebサーバーに送信するコンテンツタイプ
'Content-Length: '.strlen($content) //メッセージ本文の長さ
);
//ストリームコンテキスト設定
$context = array(
'http' => array(
'ignore_errors' => true, //ステータスコードが失敗を意味する場合でもコンテンツを取得
'method' => 'POST', //メソッド。デフォルトはGET
'header' => implode("\r\n", $header), //ヘッダ設定
'content' => $content //送信したいデータ
)
);
$res = file_get_contents($url, false, stream_context_create($context));
}
}
受信側
今回はデータを受け取ってデータベースに格納するという想定。以下ファイルを設置する。
header('Access-Control-Allow-Origin: *'); //クロスドメイン対策
$msg = 0;
if( $_POST['name'] && $_POST['mail'] && $_POST['pass'] ){
$sql = '
INSERT INTO test_table
(name, mail, pass, regist)
VALUES
(
"'.$mysqli->real_escape_string($_POST['name']).'",
"'.$mysqli->real_escape_string($_POST['mail']).'",
"'.$mysqli->real_escape_string($_POST['pass']).'",
now()
)
';
$row = $mysqli->query($sql);
$msg = ($row) ? $mysqli->insert_id : 0;
}
echo $msg;
その他
別サーバーかつ受取側がHTTPSだったので、そのあたりで躓くかと思いきや特に問題は発生しなかった。
参考サイト
関連記事
-
-
WordPressのContact Form 7から送信した内容をダッシュボードから確認及びCSVファイル化する方法
WordPressのContact Form 7プラグインで実装されたお問い合わ ...
-
-
WordPressのcontact form7で500エラーの対応方法
WordPressプラグインのcontact form7で送信ボタンを押し、ロー ...
-
-
WordPressのContact Form 7プラグインで入力内容確認及び送信完了ページを実装する方法
WordPressのContact Form 7プラグインで実装されたお問い合わ ...
-
-
WordPressのContact Form 7プラグインでユーザーに対して自動返信メールを送信する方法
WordPressのContact Form 7プラグインで実装されたお問い合わ ...
-
-
Contact form7で送信数を測定(トラッキングタグ)
contact form7でフォーム送信が完了した時点で計測されるようにトラッキ ...