标签:blog http io ar os 使用 sp for strong
这也是个老生常谈的话题了,上午花了点时间把这个问题整理了一下。
一般来说用PHP来模拟post提交数据有三种方法,file_get_contents、curl和socket。
写了个公用函数,专门用来打印post数据:
<?php function pr() { $params = func_get_args(); foreach ($params as $key => $value) { echo "<pre>"; print_r($value); echo "</pre>"; } }
<?php require dirname(__FILE__).‘/function.php‘; if (isset($_POST) && !empty($_POST)) { pr($_POST); } else { pr("NO POST DATA!"); }
<?php require dirname(__FILE__).‘/function.php‘; function file_get_contents_post($url, $post) { $options = array( ‘http‘ => array( ‘method‘ => ‘POST‘, // ‘content‘ => ‘name=caiknife&email=caiknife@gmail.com‘, ‘content‘ => http_build_query($post), ), ); $result = file_get_contents($url, false, stream_context_create($options)); return $result; } $data = file_get_contents_post("http://www.a.com/post/post.php", array(‘name‘=>‘caiknife‘, ‘email‘=>‘caiknife@gmail.com‘)); var_dump($data);
<?php require dirname(__FILE__).‘/function.php‘; function curl_post($url, $post) { $options = array( CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $post, ); $ch = curl_init($url); curl_setopt_array($ch, $options); $result = curl_exec($ch); curl_close($ch); return $result; } $data = curl_post("http://www.a.com/post/post.php", array(‘name‘=>‘caiknife‘, ‘email‘=>‘caiknife@gmail.com‘)); var_dump($data);
<?php require dirname(__FILE__).‘/function.php‘; function socket_post($url, $post) { $urls = parse_url($url); if (!isset($urls[‘port‘])) { $urls[‘port‘] = 80; } $fp = fsockopen($urls[‘host‘], $urls[‘port‘], $errno, $errstr); if (!$fp) { echo "$errno, $errstr"; exit(); } $post = http_build_query($post); $length = strlen($post); $header = <<<HEADER POST {$urls[‘path‘]} HTTP/1.1 Host: {$urls[‘host‘]} Content-Type: application/x-www-form-urlencoded Content-Length: {$length} Connection: close {$post} HEADER; fwrite($fp, $header); $result = ‘‘; while (!feof($fp)) { // receive the results of the request $result .= fread($fp, 512); } $result = explode("\r\n\r\n", $result, 2); return $result[1]; } $data = socket_post("http://www.a.com/post/post.php", array(‘name‘=>‘caiknife‘, ‘email‘=>‘caiknife@gmail.com‘)); var_dump($data);
标签:blog http io ar os 使用 sp for strong
原文地址:http://www.cnblogs.com/honeynm/p/4155529.html