概述
<?php
if (! function_exists ( 'socket_post' )) {
function socket_post($url, $data, $referer = '') {
if (! is_array ( $data )) {
return;
}
$data = http_build_query ( $data );
$url = parse_url ( $url );
if (empty ( $url ['scheme'] ) || $url ['scheme'] != 'http') {
die ( "Error: Only HTTP request are supported !" );
}
$host = $url ['host'];
$path = isset ( $url ['path'] ) ? $url ['path'] : '/';
// open a socket connection on port 80 - timeout: 30 sec
$fp = fsockopen ( $host, 80, $errno, $errstr, 30 );
if ($fp) {
// send the request headers:
$length = strlen ( $data );
$POST = <<<HEADER
POST {$path} HTTP/1.1
Accept: text/plain, text/html
Referer: {$referer}
Accept-Language: zh-CN,zh;q=0.8
Content-Type: application/x-www-form-urlencode
Cookie: token=value; pub_cookietime=2592000; pub_sauth1=value; pub_sauth2=value
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17
Host: {$host}
Content-Length: {$length}
Pragma: no-cache
Cache-Control: no-cache
Connection: closern
{$data}
HEADER;
fwrite ( $fp, $POST );
$result = '';
while ( ! feof ( $fp ) ) {
// receive the results of the request
$result .= fread ( $fp, 512 );
}
} else {
return array (
'status' => 'error',
'error' => "$errstr ($errno)"
);
}
// close the socket connection:
fclose ( $fp );
// split the result header from the content
$result = explode ( "rnrn", $result, 2 );
// return as structured array:
return array (
'status' => 'ok',
'header' => isset ( $result [0] ) ? $result [0] : '',
'content' => isset ( $result [1] ) ? $result [1] : ''
);
}
}
print_r ( socket_post ( 'http://blog.51cto.com/', array (
'name=' => 'qiufeng',
'password' => md5 ( 'www.fengdingbo.com' )
) ) );
?>
转载于:https://www.cnblogs.com/vania/p/4701902.html
最后
以上就是专一香水为你收集整理的PHP socket模拟POST请求的全部内容,希望文章能够帮你解决PHP socket模拟POST请求所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复