Simulating a Form Method=Post submission in PHP [message #178421] |
Sat, 16 June 2012 18:25  |
Robert Rosenberg
Messages: 6 Registered: May 2012
Karma: 0
|
Junior Member |
|
|
I would like to go to an external site and send a form to it via Post
(simulating having generated the form and having the user submit it). I know
that if I had been using GET, I could just code the parms along with the URL
in the location command. To simulate Post I assume that I just need to use
header to send the POST parms but I do not know the format of what to place
in the header request (and I assume that I then use location to fire off to
connection).
Can someone either supply me with a sample code to do this or give me the
URL of the documentation of the Headers that get sent by Post so I can look
them up and create the needed script myself.
Thank You.
|
|
|
|
|
|
|
Re: Simulating a Form Method=Post submission in PHP [message #178428 is a reply to message #178426] |
Sun, 17 June 2012 12:19   |
J.O. Aho
Messages: 194 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
Robert Rosenberg wrote:
> On 06/16/2012 14:46, in article 6s0va9-ugd(dot)ln1(at)luuk(dot)invalid(dot)lan, "Luuk"
>> use curl (example #2)
>> see: http://www.php.net/manual/en/function.curl-setopt.php
> Example 2 was EXACTLY what I needed (even though all I wanted to do was pass
> a set of parms not load a file).
>
> One other query. I seem to remember a site whose function was to display all
> the headers being passed. I think it was a security type page whose purposed
> was to show all the data being leaked/sent in the headers when you connect.
> I would like to see what I ended up sending (as well as all the headers
> being sent) so I have a reference to see what the cURL function caused the
> browser to send. Cam you refresh my memory by supplying a URL for that site.
First of all, when you are using PHP on a website, everything regarding PHP is
executed on the web server, so the users web browser will not do anything more
than send a form to your script.
If you want to have header information which curl sent to the server, you can
do the following before you use curl_close():
$sentheader = curl_getinfo($ch, CURLINFO_HEADER_OUT);
If you want to have the header you got from the remote server, then do the
following before curl_exec():
curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
and before curl_close():
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
If you are interested of seeing the header that the user sent when they posted
the the form:
$headers = apache_request_headers();
foreach ($headers as $header => $value) {
echo "$header: $value <br />\n";
}
This will only work on a apache server, depending on how you have setup the
apache server to execute php. There is suggestion on a work around which you
can read at:
http://www.rvaidya.com/blog/php/2009/02/25/get-request-headers-sent-by-clie nt-in-php/
--
//Aho
|
|
|
|
Re: Simulating a Form Method=Post submission in PHP [message #178435 is a reply to message #178421] |
Mon, 18 June 2012 07:54   |
Arno Welzel
Messages: 317 Registered: October 2011
Karma: 0
|
Senior Member |
|
|
Robert Rosenberg, 16.06.2012 20:25:
> I would like to go to an external site and send a form to it via Post
> (simulating having generated the form and having the user submit it). I know
> that if I had been using GET, I could just code the parms along with the URL
> in the location command. To simulate Post I assume that I just need to use
> header to send the POST parms but I do not know the format of what to place
> in the header request (and I assume that I then use location to fire off to
> connection).
If available - use curl:
<http://php.net/manual/en/book.curl.php>
> Can someone either supply me with a sample code to do this or give me the
> URL of the documentation of the Headers that get sent by Post so I can look
> them up and create the needed script myself.
<?php
$data = array(
'field1'=>'value1',
'field2'=>'value2'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://server.example');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
curl_close($ch);
?>
--
Arno Welzel
http://arnowelzel.de
http://de-rec-fahrrad.de
|
|
|
Re: Simulating a Form Method=Post submission in PHP [message #178575 is a reply to message #178426] |
Tue, 03 July 2012 12:11  |
Denis McMahon
Messages: 634 Registered: September 2010
Karma: 0
|
Senior Member |
|
|
On Sat, 16 Jun 2012 20:10:09 -0400, Robert Rosenberg wrote:
> One other query. I seem to remember a site whose function was to display
> all the headers being passed.
Assuming you have a web server available to you, it shouldn't be too
difficult to set this up yourself. Just make a page on your server that
logs the relevant data to a file, and point your curl routines at that
page.
Rgds
Denis McMahon
|
|
|