Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

doing an http post

0 views
Skip to first unread message

Gary Petersen

unread,
Aug 23, 2003, 3:11:33 AM8/23/03
to
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";
?>

Rasmus Christian Kaae

unread,
Aug 23, 2003, 3:44:24 AM8/23/03
to
"Gary Petersen" <gary...@REMOVE.MEearthlink.INVALID> skrev i en meddelelse
news:pan.2003.08.23.05...@REMOVE.MEearthlink.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


Phil Roberts

unread,
Aug 23, 2003, 6:38:35 AM8/23/03
to
With total disregard for any kind of safety measures "Rasmus
Christian Kaae" <rasmus...@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.....

MeerKat

unread,
Aug 23, 2003, 9:20:44 AM8/23/03
to
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

MeerKat

unread,
Aug 23, 2003, 9:25:20 AM8/23/03
to

Apologies, I really should have read your message more carefully. POSTs
-are- defined in this RFC very carefully but not really in a manner
whereby you can just read a paragraph or two and get the information you
want...

--
MeerKat

Gary Petersen

unread,
Aug 24, 2003, 2:26:53 AM8/24/03
to
On Sat, 23 Aug 2003 05:38:35 -0500, in message
<Xns93E07675A2...@216.196.97.132>, the AI program named "Phil
Roberts" <phi...@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.

0 new messages