利用Curl、socket、file_get_contents POST数据

<?php 
/** 
* Socket版本 
* 使用方法: 
* $post_string = "app=socket&version=beta"; 
* request_by_socket('facebook.cn','/restServer.php',$post_string); 
*/ 
function request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30){ 
  $socket = fsockopen($remote_server,$port,$errno,$errstr,$timeout); 
  if (!$socket) die("$errstr($errno)"); 
  
  fwrite($socket,"POST $remote_path HTTP/1.0"); 
  fwrite($socket,"User-Agent: Socket Example"); 
  fwrite($socket,"HOST: $remote_server"); 
  fwrite($socket,"Content-type: application/x-www-form-urlencoded"); 
  fwrite($socket,"Content-length: ".strlen($post_string)+8.""); 
  fwrite($socket,"Accept:*/*"); 
  fwrite($socket,""); 
  fwrite($socket,"mypost=$post_string"); 
  fwrite($socket,""); 
  
  $header = ""; 
  while ($str = trim(fgets($socket,4096))) { 
    $header.=$str; 
  } 
  
  $data = ""; 
  while (!feof($socket)) { 
    $data .= fgets($socket,4096); 
  } 
  
  return $data; 

 
 
/** 
* Curl版本 
* 使用方法: 
* $post_string = "app=request&version=beta"; 
* request_by_curl('http://facebook.cn/restServer.php',$post_string); 
*/ 
function request_by_curl($remote_server,$post_string){ 
  $ch = curl_init(); 
  curl_setopt($ch,CURLOPT_URL,$remote_server); 
  curl_setopt($ch,CURLOPT_POSTFIELDS,'mypost='.$post_string); 
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
  curl_setopt($ch,CURLOPT_USERAGENT,"Jimmy's CURL Example beta"); 
  $data = curl_exec($ch); 
  curl_close($ch); 
  return $data; 

/** 
* 其它版本 
* 使用方法: 
* $post_string = "app=request&version=beta"; 
* request_by_other('http://facebook.cn/restServer.php',$post_string); 
*/ 
function request_by_other($remote_server,$post_string){ 
  $context = array( 
    'http'=>array( 
     'method'=>'POST', 
     'header'=>'Content-type: application/x-www-form-urlencoded'."". 
        'User-Agent : Jimmy's POST Example beta'."". 
        'Content-length: '.strlen($post_string)+8, 
     'content'=>'mypost='.$post_string) 
    ); 
  $stream_context = stream_context_create($context); 
  $data = file_get_contents($remote_server,FALSE,$stream_context); 
  return $data; 

 
?>

你可能感兴趣的:(利用Curl、socket、file_get_contents POST数据)