勉強したことのメモ

webプログラマが勉強したことのメモ。

contact form7で送信時に別サーバへデータ送信

   

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だったので、そのあたりで躓くかと思いきや特に問題は発生しなかった。

 

参考サイト

http://daily.glocalism.jp/wordpress/contact-form-7-hooks/

 - WordPress

  関連記事

WordPressでスケジュール実行される日時を調べる方法

WordPressであるシステムを実装し、その際に毎日1回スケジュール実行(WP ...

WordPressの管理画面で記事一覧にアイキャッチ画像を表示

WordPressの管理画面で記事一覧にアイキャッチ画像を表示させる方法のメモ。 ...

さくらvpsにワードプレスを導入

さくらvpsで立ち上げたサーバーにWordPressを導入した際のメモ。 ①ダウ ...

WordPressで閲覧者にテーマを変更させるプラグイン

「新規サイトを○○みたいなイメージでWordPressのテーマを見繕って欲しい」 ...

ACFでセレクトメニューを動的に生成

WordPressでカスタムフィールド設定用のプラグインAdvanced Cus ...

WordPressで固定ページに記事一覧を表示させるプラグイン

WordPressで固定ページ編集時にショートコードを書くことで、記事一覧を表示 ...

WordPressで記事検索時に投稿ID順にならない場合

WordPressでサイト上から記事検索を行った場合、通常であれば投稿IDが新し ...

WordPressのWP-Mail-SMTPプラグインが動かない

PHPのバージョンを下げてからWordPressで外部メールサーバが使えるWP- ...

youtubeの検索結果をWordPressに自動投稿する方法

youtubeから特定のキーワードで検索した動画をWordPressに自動で投稿 ...

WordPressでタグやカテゴリの複数検索

WordPressでカテゴリのアンド検索や、タグとカテゴリの同時検索を行いたかっ ...