首页 > 编程 > PHP > 正文

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

2020-03-22 18:32:15
字体:
来源:转载
供稿:网友
一、通过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($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);

二、通过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= PRE "code" {1} /PRE BR
SERVER["SCRIPT_URI"]; // making string from $dataforeach($post_data as $key= $html' target='_blank'>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);
PRE /PRE
P BR
/P
P Snoopy 类(2) BR
sourceforge.net/projects/snoopy/ /P
P http://www.redalt.com/xref/trunk/nav.htm?wp-includes/class-snoopy.php.htm /P
P HTTP类(1,2) /P
P http://www.phpclasses.org/browse/download/1/file/5/name/http.php /P
P PEAR HTTP_Request /P
P http://pear.php.net/package/HTTP_Request /P
P > P /P
PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表