• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php自定义类fsocket模拟post或get请求的方法_PHP

php 搞代码 4年前 (2022-01-25) 10次浏览 已收录 0个评论

本文实例讲述了php自定义类fsocket模拟post或get请求的方法。分享给大家供大家参考。具体如下:

zsocket.class.php文件如下:

_setCookie(substr($line, 12)); }   $reHeader .= $line;   if(substr($line, 0, 16) == 'Content-Length: '){    $maxlen = intval(substr($line, 16, -2));    }   if($line == "\r\n" || $line == "") break;  }  return $maxlen; } /*  * 获取返回数据正文内容 */ private function _getDataBody(&$fp,$maxlen){  $reData = "";  while(!feof($fp)){   $line = fgets($fp,$maxlen+1);   $reData .= $line;   if(strlen($line) $value){     $_params .= "&".$key."=".urlencode($value);    }   $_params = (strlen($_params) > 1) ? substr($_params,1) : '';  }else if(is_string($params)){   $_params = urlencode($params);  }  foreach($cookies as $key=>$value){   $_cookies .= "; ".$key."=".urlencode($value);   }  $_cookies = (strlen($_cookies) > 2) ? substr($_cookies,2) : '';  $file .= ($type == 'GET') ? ($_params == '' ? '' : '?'.$_params) : '';  $header = $type." ".$file." HTTP/1.1\r\n";  $header .= "Host: ".$host."\r\n";  //$header .= "Referer: ".get_ip()."\r\n";  //$header .= "X-Forwarded-For: ".get_ip()."\r\n";  $header .= ($type == 'GET') ? '' : "Content-Type: application/x-www-form-urlencode<p style="color:transparent">2本文来源gao!daima.com搞$代!码网</p><span>搞代gaodaima码</span>d\r\n";  if(is_array($head) && $head != array()){   foreach($head as $k=>$v){    $header .= $k.": ".$v."\r\n";   }  }  $header .= "Content-Length: ".strlen($_params)."\r\n";  if($_cookies != '') $header .= "Cookie: ".$_cookies."\r\n";  /*  foreach($_SERVER as $name => $value){   if(substr($name, 0, 5) == 'HTTP_' && $name != 'HTTP_HOST'){    $header .= str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5))))).":".$value."\r\n";   }  }  */  $header .= "Connection: Close\r\n\r\n";  $header .= $_params."\r\n";  return $header; } /*  * 发送,并返回结果 Array */ public function get_SendData($host,$port=80,$header=''){  if(function_exists('fsockopen')){   $fp = fsockopen($host,$port,$errno,$errstr,10);  }else if(function_exists('pfsockopen')){   $fp = pfsockopen($host,$port,$errno,$errstr,10);  }else if(function_exists('stream_socket_client')){   $fp = stream_socket_client($host.':'.$port,$errno,$errstr,10);  }else{   $fp = $this->_fsockopen($host,$port,$errno,$errstr,10);  }  $fp = fsockopen($host,$port,$errno,$errstr,10);  if(!$fp) return array('header'=>'','data'=>$errstr."--->".$errno,'cookie'=>'');  $reHeader = $reData = "";  $cookies = array();  fputs($fp,$header);  $maxlen = $this->_getDataHeader($fp,$reHeader,$cookies);  $reData = $this->_getDataBody($fp,$maxlen);  fclose($fp);  return array('header'=>$reHeader,'data'=>$reData,'cookie'=>$cookies); }}

demo代码如下:

$host = 'www.bitsCN.com';$port = '80';$type = 'POST';$file = '/';$params = '';//include_once('include/zsocket.class.php'); //include$zsk = new ZSocket();$header = $zsk->get_HeaderInfo($host,$type,$file,$params);$data = $zsk->get_SendData($host,$port,$header);/*echo "<!---ecms \r\n";print_r($header);print_r($data);echo "-->\r\n";*/var_dump($header);var_dump($data);

希望本文所述对大家的php程序设计有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php自定义类fsocket模拟post或get请求的方法_PHP
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址