手记

[php提交post数据]PHP模拟POST提交的2种方法

php模拟post提交数据方法(一)

通过curl函数

$post_data = array();

$post_data['clientname'] = "myname";

$post_data['clientpasswd'] = "password";

$post_data['submit'] = "submit";

$url='http://xxx.xxx.xxx.xx/xx/xxx/top.php';

$res="";

foreach ($post_data as $k=>$v)

{

$res.= "$k=".urlencode($v)."&";

}

$post_data=substr($res,0,-1);

$ch = curl_init();

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_URL,$url);

//为了支持cookie

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

$result = curl_exec($ch);

php模拟post提交数据方法(二)

通过fsockopen

$URL=‘http://xxx.xxx.xxx.xx/xx/xxx/top.php';

$post_data['clientname'] = "myname";

$post_data['clientpasswd'] = "password";

$post_data['submit'] = "submit";

$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($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"]." 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)) {

$result .= fgets($fp, 128);

}

fclose($fp);


0人推荐
随时随地看视频
慕课网APP