I am using a function to send POST information to a script on another server. I need to get the html of the page that results, but there is a problem. When the information is submitted on the other server, it is processed and then redirected to a different page. My problem is that my function only returns the redirect page with the header location pointing to the page that I need the info from. Roughly:
HTTP/1.1 302 Moved Temporarily Date: Thu, 14 Jul 2005 02:17:33 GMT Server: Apache/2.0.46 (Red Hat) Set-Cookie: JSESSIONID=1E23F1B83822230D32E378D2B5F9A0FA; Path=/ P3P: CP="CAO DSP DEVa TAIa OUR BUS UNI STA" Location: http://www.macwarehouse.co.uk/ec/search-result-groups.jtp Content-Length: 0 Connection: close Content-Type: text/plain; charset=UTF-8
Here is my post function:
function HTTP_Post($URL,$data, $referrer="")
{
// parsing the given URL
$URL_Info=parse_url($URL);
// Building referrer
if($referrer=="") // if not given use this script as referrer
$referrer=$_SERVER["SCRIPT_URI"];
// making string from $data
foreach($data as $key=>$value)
$values[]="$key=".urlencode($value);
$data_string=implode("&",$values);
// Find out which port is needed - if not given use standard (=80)
if(!isset($URL_Info["port"]))
$URL_Info["port"]=80;
// building POST-request:
$request.="POST ".$URL_Info["path"]." HTTP/1.1\n";
$request.="Host: ".$URL_Info["host"]."\n";
$request.="Referer: $referer\n";
$request.="Content-type: application/x-www-form-urlencoded\n";
$request.="Content-length: ".strlen($data_string)."\n";
$request.="Connection: close\n";
$request.="\n";
$request.=$data_string."\n";
$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
fputs($fp, $request);
while(!feof($fp)) {
$result .= fgets($fp, 128);
}
fclose($fp);
return $result;
}