出典: http://davidwalsh.name/execute-http-post-php-curl
最近、ある顧客が私にユニークな課題を持ち込んできました。私の顧客は、情報リクエストフォームのデータをデータベースに収集したいと考えています。新しいことは何もないですよね?まあ、ハードルがあります -- 情報はローカルホスト データベースには保存されません -- 直接接続できないリモート データベースに保存する必要があります。
解決するために考えられる解決策をすべて考えました。この課題に取り組み、次のフローに落ち着きました。
ユーザーは通常どおりフォームを送信します。フォーム処理 PHP では、cURL を使用して、顧客のサーバー上の PHP スクリプトへの POST 送信を実行します。リモート スクリプトは、顧客のプライベート データベースに対して MySQL INSERT クエリを実行します。この解決策は非常にうまく機能したので、あなたと共有したいと思いました。 PHP CURL ライブラリを使用して POST を実行する方法は次のとおりです。
//extract data from the postextract($_POST);//set POST variables$url = 'http://domain.com/get-post.php';$fields = array( 'lname'=>urlencode($last_name), 'fname'=>urlencode($first_name), 'title'=>urlencode($title), 'company'=>urlencode($institution), 'age'=>urlencode($age), 'email'=>urlencode($email), 'phone'=>urlencode($phone) );//url-ify the data for the POSTforeach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }rtrim($fields_string,'&');//open connection$ch = curl_init();//set the url, number of POST vars, POST datacurl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_POST,count($fields));curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);//execute post$result = curl_exec($ch);//close connectioncurl_close($ch);
この問題をどのように解決しますか?