摘要:/** * post数据 * @param string $url post的url * @param int $limit 返回的数据的长度 * @param string $post post数据,字符串形式username=\'dalarge\'&password=\'123456\' *
/**
* post数据
* @param string $url post的url
* @param int $limit 返回的数据的长度
* @param string $post post数据,字符串形式username=\'dalarge\'&password=\'123456\'
* @param string $cookie 模拟 cookie,字符串形式username=\'dalarge\'&password=\'123456\'
* @param string $ip ip地址
* @param int $timeout 连接超时时间
* @param bool $block 是否为阻塞模式
* @return string 返回字符串
*/
private function _ps_post($url, $limit = 0, $post = \'\', $cookie = \'\', $ip = \'\', $timeout = 15, $block = true) {
$return = \'\';
$matches = parse_url($url);
$host = $matches[\'host\'];
$path = $matches[\'path\'] ? $matches[\'path\'].($matches[\'query\'] ? \'?\'.$matches[\'query\'] : \'\') : \'/\';
$port = !empty($matches[\'port\']) ? $matches[\'port\'] : 80;
$siteurl = $this->_get_url();
if($post) {
$out = "POST $path HTTP/1.1rn";
$out .= "Accept: */*rn";
$out .= "Referer: ".$siteurl."rn";
$out .= "Accept-Language: zh-cnrn";
$out .= "Content-Type: application/x-www-form-urlencodedrn";
$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]rn";
$out .= "Host: $hostrn" ;
$out .= \'Content-Length: \'.strlen($post)."rn" ;
$out .= "Connection: Closern" ;
$out .= "Cache-Control: no-cachern" ;
$out .= "Cookie: $cookiernrn" ;
$out .= $post ;
} else {
$out = "GET $path HTTP/1.1rn";
$out .= "Accept: */*rn";
$out .= "Referer: ".$siteurl."rn";
$out .= "Accept-Language: zh-cnrn";
$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]rn";
$out .= "Host: $hostrn";
$out .= "Connection: Closern";
$out .= "Cookie: $cookiernrn";
}
$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
if(!$fp) return \'\';
stream_set_blocking($fp, $block);
stream_set_timeout($fp, $timeout);
@fwrite($fp, $out);
$status = stream_get_meta_data($fp);
if($status[\'timed_out\']) return \'\';
while (!feof($fp)) {
if(($header = @fgets($fp)) && ($header == "rn" || $header == "n")) break;
}
$stop = false;
while(!feof($fp) && !$stop) {
$data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));
$return .= $data;
if($limit) {
$limit -= strlen($data);
$stop = $limit <= 0;
}
}
@fclose($fp);
//部分虚拟主机返回数值有误,暂不确定原因,过滤返回数据格式
$return_arr = explode("n", $return);
if(isset($return_arr[1])) {
$return = trim($return_arr[1]);
}
unset($return_arr);
return $return;
}
相关文章推荐
虚拟主机的专业参数,分别都是什么意思?2022-09-09
中非域名注册规则是怎样的?注册域名有什么用处? 2022-01-10
HostEase新年活动促销 美国/香港主机全场低至五折2021-12-28
HostGator下载完整备份教程分享2021-12-28
Flink中有界数据与无界数据的示例分析2021-12-28