David has posted 35 posts at DZone. You can read more from them at their website. View Full User Profile

Execute a HTTP POST Using PHP CURL

03.11.2008
| 88243 views |
  • submit to reddit

A customer recently brought to me a unique challenge. My customer wants information request form data to be collected in a database. Nothing new, right? Well, there's a hurdle — the information isn't going to be saved on the localhost database — it needs to be stored in a remote database that I cannot connect directly to.

I thought about all of the possible solutions for solving this challenge and settled on this flow:

  1. User will submit the form, as usual.
  2. In the form processing PHP, I use CURL to execute a POST transmission to a PHP script on the customer's server.
  3. The remote script would do a MySQL INSERT query into the customer's private database.

This solution worked quite well so I thought I'd share it with you. Here's how you execute a POST using the PHP CURL library.

//extract data from the post
extract($_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 POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_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 connection
curl_close($ch);

How would you have solved this problem?

References
Published at DZone with permission of its author, David Walsh. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Tags:

Comments

codex 73 replied on Sun, 2009/10/18 - 10:01pm

Fantastic!!!  It works perfectly! Thanks!

Egesa Ronald replied on Tue, 2011/03/15 - 8:21pm

Thanks.

 

Lovely piece of code. Just used it to post incoming sms traffic from one box of an aggregator to another box of content provider. 

 Kudos.

 

 

Egesa

Carla Brian replied on Wed, 2012/04/04 - 8:09pm

I don't know how to this. Thanks for sharing your ideas. Good thing I saw ur post. - Madison Pharmacy Associates

Kayode Banjo replied on Tue, 2012/04/10 - 11:17pm

This is helpful. I will also share my experience interacting with server using asp.net later this week.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.