php模拟POST提交
在写一个同步插件时用到的,以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; } |
遇见技术帖,留名标记下…