实现支持post和get的PHP函数

function getsock($strUrl,$arrParameter=array(),$strMethod="POST"){
 if(!$strUrl||!$strMethod){ return "";}
 $strMethod = strtoupper($strMethod);
 $arrUrl = parse_url($strUrl);

 if($arrUrl["port"]==0){$arrUrl["port"]=80;}

 $fso = fsockopen($arrUrl["host"],$arrUrl["port"],$intErrno,$strError,10);

 if(!$fso){
    return "";
 }else{
    $strFileName = $arrUrl["path"];
    if($arrUrl["query"]!=""){
     $strFileName.= "?".$arrUrl["query"];
  }
 
  $strHeader    = "$strMethod $strFileName HTTP/1.1/r/n";
  $strHeader    .= "Host:".$arrUrl["host"].":".$arrUrl["port"]."/r/n";

  if($strMethod=="POST"){
    if(is_array($arrParameter)){
     $blnFlag = 0;
      foreach($arrParameter as $strKey=>$Value){
       if($blnFlag){
        $strParameter.= "&";
        $blnFlag = 1;
       }
       $strParameter.= $strKey."=";
       $strParameter.= urlencode($Value);
       $blnFlag = 1;
      }
     }
     $intLength = strlen($strParameter);
     $strHeader .= "Content-Type: application/x-www-form-urlencoded/r/n";
     $strHeader .= "Content-Length: ".$intLength."/r/n";
   }

   $strHeader    .= "Connection: Close/r/n/r/n";
   if($strParameter!=""){
     $strHeader    .= $strParameter."/r/n";
   }

   fputs($fso,$strHeader);
   $strResult = "";
   $intHeader = 1;
 
  while(!feof($fso)) {
     $strLine = fgets($fso,1024);
     //去除请求包的头只显示页面的返回数据
     if ($intHeader && ($strLine == "/n" || $strLine == "/r/n")) {
      $intHeader = 0;
     }
     if ($intHeader == 0) {
      $strResult .= $strLine;
     }
    }
    fclose($fso);
    return $strResult;
}
}


getsock函数的使用方法(默认是POST)

例子:

getsock('http://www.xxx.net/login.php',array('username'=>'admin','password'=>'123456'));

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值