472,110 Members | 2,303 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,110 software developers and data experts.

doing an http post

For the benefit of others, I want to show how to do
an HTTP POST request using fsockopen(). I banged my
head against a wall for two days trying to figure
this out. I even went to http://php.net/ to find
out how to do this, but it didn't help because
my mind automagically converted the "Content-Length"
header into "Length."

I even went to http://www.ietf.org/ to find out
the specific protocol for HTTP POSTs, but I didn't
find it there. RFC 2616 (HTTP) does not give the
exact format for POST requests.

Question: Where is the format for POST requests defined?

---------------- send_post.php ---------------
<?php
// file: send_post.php
error_reporting(E_ALL & ~E_NOTICE);
$eol = "\r\n";
$errno = 0;
$errstr = '';
$data = 'username=george&password=i81bpz';
$fid = fsockopen('localhost', 8080, &$errno, &$errstr, 30);
if ($fid) {
fputs ($fid, "POST /post/show_post.php HTTP/1.1$eol");
fputs ($fid, "HOST: localhost$eol");
fputs ($fid, "Connection: close$eol");
fputs ($fid, "Content-Type: application/x-www-form-urlencoded$eol");

// Use 'Content-Length' NOT 'Length' !
fputs ($fid, 'Content-Length: ' . strlen($data) . $eol);
fputs ($fid, $eol);
fputs ($fid, $data);
fputs ($fid, $eol);
fpassthru($fid);
}

?>

------------- show_post.php -----------------
<?php
// file: show_post.php
error_reporting(E_ALL & ~E_NOTICE);

echo "<pre>\n";
echo "------------ POST VARIABLES ----------\n";
print_r($HTTP_POST_VARS);
echo "------------ SERVER VARIABLES ----------\n";
print_r($HTTP_SERVER_VARS);
echo "</pre>\n";
?>
Jul 16 '05 #1
4 17006
"Gary Petersen" <ga*******@REMOVE.MEearthlink.INVALID> skrev i en meddelelse
news:pa********************************@REMOVE.MEe arthlink.INVALID...
For the benefit of others, I want to show how to do
an HTTP POST request using fsockopen(). I banged my
head against a wall for two days trying to figure
this out. I even went to http://php.net/ to find
out how to do this, but it didn't help because
my mind automagically converted the "Content-Length"
header into "Length."

Use curl instead.

---
Rasmus Christian Kaae
www.3kings.dk | www.hestebasen.com
Jul 16 '05 #2
With total disregard for any kind of safety measures "Rasmus
Christian Kaae" <ra**********@3kings.dk> leapt forth and uttered:
For the benefit of others, I want to show how to do
an HTTP POST request using fsockopen(). I banged my
head against a wall for two days trying to figure
this out. I even went to http://php.net/ to find
out how to do this, but it didn't help because
my mind automagically converted the "Content-Length"
header into "Length."

Use curl instead.


What an amazingly helpful answer.

Try something like this? :

function PostToHost($host, $path, $data_to_send) {
$fp = fsockopen($host,80);
fputs($fp, "POST $path HTTP/1.1\n" );
fputs($fp, "Host: $host\n" );
fputs($fp, "Content-type: application/x-www-form-urlencoded\n" );
fputs($fp, "Content-length: ".strlen($data_to_send)."\n" );
fputs($fp, "Connection: close\n\n" );
fputs($fp, $data_to_send);
fclose($fp);
}

--
There is no signature.....
Jul 16 '05 #3
Gary Petersen wrote:
Question: Where is the format for POST requests defined?


Try:
www.w3c.org

The RFC in question is RFC2616, which is the HTTP/1.1 specification and
can be found here:
ftp://ftp.isi.edu/in-notes/rfc2616.txt

--
MeerKat

Jul 16 '05 #4
On Sat, 23 Aug 2003 05:38:35 -0500, in message
<Xn*************************@216.196.97.132>, the AI program named "Phil
Roberts" <ph*****@holyflatnetshit.net> randomly printed:
fputs($fp, "POST $path HTTP/1.1\n" );
fputs($fp, "Host: $host\n" );


I thought that the end of line sequence was
\r\n not just \n.

Jul 16 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by steven | last post: by
reply views Thread by Klem | last post: by
3 posts views Thread by JansenH | last post: by
1 post views Thread by Arfeen | last post: by
reply views Thread by leo001 | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.