CURL is built-in to the usual up-to-date PHP distributions. (You may need to ebale it in php.ini). CURL lets you programmatically transfer files using all the usual protocols, such as HTTP and FTP. Among other things, it lets you write PHP to simulate posting forms. In other words, it's useful for some test scripts. And it is free, open-source code.
You'll find plenty of info about CURL on the web which I won't attempt to reproduce. A good starting point is curl.haxx.se/libcurl/php/. I'm indebted to smart-guy Richard Garbutt at altcom, for pointing me in this direction.
Assuming you already have PHP5 set up, (PHP4 probably OK too), then simply visit PHP.INI and remove the semi-colon in front of
extension=php_curl.dll
and restart Apache.
This example is copied verbatim from curl.haxx.se, all credit due.
<?php
//
// A very simple PHP example that sends a HTTP POST to a remote site
//
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.mysite.com/tester.phtml");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"postvar1=value1&postvar2=value2&postvar3=value3");
curl_exec ($ch);
curl_close ($ch);
?>
I was using something similar to provide form inputs to the Drupal Skills database, which I built for altcom.