php fsockopen 传参,php使用fsockopen传送POST到別的URL并取得回应內容

如果不需要传送参数或是使用GET method传送可以直接使用fopen()或是file_get_contents()函式获得回应內容

但是如果需要不经过表单就送出POST给某URL就需要使用curl相关函式或是fsockopen()传送

curl的用法比较简单可以咕狗看看(但是php必须要先安裝curl才可以用),这边要讲的是fsockopen().

//接收POST參數的URL

$url = 'http://www.google.com';

//POST參數,在這個陣列裡,索引是name,值是value,沒有限定組數

$postdata = array(

'post_name'=>'post_value','acc'=>'hsin','nick'=>'joe');

//函式回覆的值就是取得的內容

$result = sendpost($url,$postdata);

function sendpost($url, $data){

//先解析url 取得的資訊可以看看http://www.php.net/parse_url

$url = parse_url($url);

$url_port = $url['port']==''?(($url['scheme']=='https')?443:80):$url['port'];

if(!$url) return "couldn't parse url";

//對要傳送的POST參數作處理

$encoded = "";

while(list($k,$v)=each($data)){

$encoded .= ($encoded?'&':'');

$encoded .= rawurlencode($k)."=".rawurlencode($v);

}

//開啟一個socket

$fp = fsockopen($url['host'],$url_port);

if(!$fp) return "Failed to open socket to ".$url['host'];

//header的資訊

fputs($fp,'POST '.$url['path'].($url['query']?'?'.$url['query']:'')." HTTP/1.0rn");

fputs($fp,"Host: ".$url['host']."n");

fputs($fp,"Content-type: application/x-www-form-urlencodedn");

fputs($fp,"Content-length: ".strlen($encoded)."n");

fputs($fp,"Connection: closenn");

fputs($fp,$encoded."n");

//取得回應的內容

$line = fgets($fp,1024);

if(!eregi("^HTTP/1.. 200", $line)) return;

$results = "";

$inheader = 1;

while(!feof($fp)){

$line = fgets($fp,2048);

if($inheader&&($line == "n" || $line == "rn")){

$inheader = 0;

}elseif(!$inheader){

$results .= $line;

}

}

fclose($fp);

return $results;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值