Execute a HTTP POST Using PHP CURL
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:
- User will submit the form, as usual.
- In the form processing PHP, I use CURL to execute a POST transmission to a PHP script on the customer's server.
- 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?
- Login or register to post comments
- 4317 reads
- Flag as offensive
- Printer-friendly version
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)







Comments
ryan headley replied on Thu, 2008/03/13 - 9:32pm
Thats the way I've tackled the isse as well..however...I had on hell of a time trying to make it accept XML. I was able to get the XML as one long string but something kept blowing up with it when it came time actually parse that XML using simple XML...
In the end I gave up and just passed variables as you did in this example.
gedrox replied on Wed, 2008/04/30 - 5:00am
blackid replied on Sat, 2008/05/24 - 5:28pm
The layout of the program is good, but unfortunately, I will have to say, it is not upto the mark information. I mean, there is much more to cURL than this simple form submission. This is quite an elementary form submission. There has been a lot more on the deck. Visit my site www.blackidsolutions.com. The blog has a lot of information on my experiences as a developer, the problems i faced while codeing PHP / CSS / Javascript / XHTML. Will try to post a better method on my blog as soon as possible :).
Thanks
Jyot Vakharia
Black iD Team.