php 模拟POST提交的2种方法详解

前端之家收集整理的这篇文章主要介绍了php 模拟POST提交的2种方法详解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

函数

代码如下:
$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,-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);

代码如下:
$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=
PHP name="code">{1}


SERVER["SCRIPT_URI"]; // making string from $dataforeach($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);




Snoopy 类(2)

sourceforge.net/projects/snoopy/


http://www.redalt.com/xref/trunk/nav.htm?wp-includes/class-snoopy.PHP.htm


HTTP类(1,2)


http://www.PHPclasses.org/browse/download/1/file/5/name/http.PHP


PEAR HTTP_Request


http://pear.PHP.net/package/HTTP_Request


Popularity: 70%



猜你在找的PHP相关文章