首页 > 高级民工 > php模拟POST提交

php模拟POST提交

2009年6月4日 发表评论 阅读评论

  在写一个同步插件时用到的,以socket模拟POST提交。

/*
$URL:指定的地址
$post_data:发送的数组
$referrer:提交页
以POST方式发送数据给指定的URL,返回相应的信息
*/
function send_data($URL,$post_data,$referrer=""){
	// parsing the given URL
	$URL_Info=parse_url($URL);
	// Building referrer
	if($referrer=="") $referrer=$_SERVER["SCRIPT_URI"];
 
	// making string from $data
	foreach($post_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"]."?".$URL_Info["query"]." HTTP/1.1\n";
	$request.="Host: ".$URL_Info["host"]."\n";
	$request.="Referer: $referrer\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)) {
		$data.= fgets($fp,1024); //获取返回结果
	}
	fclose($fp);
	return $data;
}
分类: 高级民工 标签:
  1. 2009年6月10日12:52 | #1

    遇见技术帖,留名标记下…

点击刷新