PHP socket模拟POST请求
<?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: close\r\n {$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 ( "\r\n\r\n", $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' ) ) ) ); ?>