php 模拟POST提交的2种方法

来源:互联网 发布:js转化日期yyyymmdd 编辑:程序博客网 时间:2024/05/16 23:48

 

1.通过curl函数

$post_data = array();
$post_data['clientname'] = "test08";
$post_data['clientpasswd'] = "test08";
$post_data['submit'] = "submit";
$url='http://xxx.xxx.xxx.xx/xx/xxx/top.php';
$o="";
foreach ($post_data as $k=>$v)
{
    
$o.= "$k=".urlencode($v)."&";
}
$post_data=substr($o,0,-1);
$ch = curl_init();
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_URL,$url);
//为了支持cookie
curl_setopt($chCURLOPT_COOKIEJAR'cookie.txt');
curl_setopt($chCURLOPT_POSTFIELDS$post_data);
$result = curl_exec($ch);

2.通过fsockopen

$URL=‘http://xxx.xxx.xxx.xx/xx/xxx/top.php';
$post_data['clientname'] = "test08";
$post_data['clientpasswd'] = "test08";
$post_data['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($fp128);
}
fclose($fp);

 

 

原创粉丝点击