php使用socket post数据到其它web服务器的方法

本文实例讲述了php使用socket post数据到其它web服务器的方法。分享给大家供大家参考。具体实现方法如下:

function post_request($url, $data, $referer='') {
  // Convert the data array into URL Parameters like a=b&foo=bar etc.
  $data = http_build_query($data);
  // parse the given URL
  $url = parse_url($url);
  if ($url['scheme'] != 'http') {
    die('Error: Only HTTP request are supported !');
  }
  // extract host and path:
  $host = $url['host'];
  $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:
    fputs($fp, "POST $path HTTP/1.1\r\n");
    fputs($fp, "Host: $host\r\n");
    if ($referer != '')
      fputs($fp, "Referer: $referer\r\n");
    fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
    fputs($fp, "Content-length: ". strlen($data) ."\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    fputs($fp, $data);
    $result = '';
    while(!feof($fp)) {
      // receive the results of the request
      $result .= fgets($fp, 128);
    }
  }
  else {
    return array(
      'status' => 'err',
      'error' => "$errstr ($errno)"
    );
  }
  // close the socket connection:
  fclose($fp);
  // split the result header from the content
  $result = explode("\r\n\r\n", $result, 2);
  $header = isset($result[0]) ? $result[0] : '';
  $content = isset($result[1]) ? $result[1] : '';
  // return as structured array:
  return array(
    'status' => 'ok',
    'header' => $header,
    'content' => $content
  );
}
//使用方法
// Submit those variables to the server
$post_data = array(
  'test' => 'foobar',
  'okay' => 'yes',
  'number' => 2
);
// Send a request to example.com
$result = post_request('http://www.example.com/', $post_data);
if ($result['status'] == 'ok'){
  // Print headers
  echo $result['header'];
  echo '<hr />';
  // print the result of the whole request:
  echo $result['content'];
}
else {
  echo 'A error occured: ' . $result['error'];
}

希望本文所述对大家的php程序设计有所帮助。

(0)

相关推荐

  • PHP获取POST数据的几种方法汇总

    一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urlencoded提交的数据 解释:也就是表单POST过来的数据 方法2.file_get_contents("php://input"); 说明: 允许读取 POST 的原始数据. 和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini

  • PHP中使用socket方式GET、POST数据实例

    1. 使用 PHP 获得网页内容 GET方式 复制代码 代码如下: <?php function socketGet($url, &$ret) {  $urlArr = parse_url($url);  $host = $urlArr['host'];  $port = isset($urlArr['port'])?$urlArr['port']:80;  $path = isset($urlArr['path'])?$urlArr['path']:"/";  $fp

  • 浅谈PHP接收POST数据方式

    通常情况下用户使用浏览器网页表单向服务器post提交数据,我们使用PHP接收用户POST到服务器的数据,并进行适当的处理.但有些情况下,如用户使用客户端软件向服务端php程序发送post数据,而不能用$_POST来识别,那又该如何处理呢? $_POST方式接收数据 $_POST方式是通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量.如使用$_POST['name']就可以接收到网页表单以及网页异步方式post过来的数据,即$_POST只能接收文档类型为Content-Type:

  • 使用PHP接收POST数据,解析json数据

    复制代码 代码如下: <?php $json_string = $_POST["txt_json"]; if(ini_get("magic_quotes_gpc")=="1") {  $json_string=stripslashes($json_string); } $user = json_decode($json_string); echo var_dump($user);?> 在这个文件中,首先得到html文件中POST表单域

  • PHP基于CURL进行POST数据上传实例

    本文实例讲述了PHP基于CURL进行POST数据上传的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: ////二维码 $QRCode_URL="https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$ACC_TOKEN;    $data ='{"expire_seconds": 1800, "action_name": "QR_SCENE&q

  • PHP中使用file_get_contents post数据代码例子

    废话不多说,上代码: 复制代码 代码如下: $data = array(     'name' => 'Joe',     'website' => 'www.jb51.net' ); $data = http_build_query($data); $data = json_encode($data); $json = file_get_contents($url, 0, stream_context_create(array(     'http' => array(        

  • PHP的cURL库功能简介 抓取网页、POST数据及其他

    无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,反应釜cURL 是一个功能强大的PHP库.本文主要讲述如果使用这个PHP库. 启用 cURL 设置 首先,我们得先要确定我们的PHP是否开启了这个库,你可以通过使用php_info()函数来得到这一信息. 复制代码 代码如下: <?php phpinfo(); ?> 如果你可以在网页上看到下面的输出,那么表示cURL库已被开启. 如果你看到的话,那么你需要设置你的PHP并开启这个库.如果你是在

  • 如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的

    可以使用以下函数来实现: <?php function posttohost($url, $data) { $url = parse_url($url); if (!$url) return "couldn't parse url"; if (!isset($url['port'])) { $url['port'] = ""; } if (!isset($url['query'])) { $url['query'] = ""; } $enc

  • PHP下使用CURL方式POST数据至API接口的代码

    其实,也比较简单,上代码: 复制代码 代码如下: <?php $url = 'http://127.0.0.1/test.php';//POST指向的链接          $data = array(              'access_token'=>'thekeyvalue'         ); $json_data = postData($url, $data);          $array = json_decode($json_data,true);         

  • php获取POST数据的三种方法实例详解

    php获取POST数据的三种方法 方法一,$_POST $_POST或$_REQUEST存放的是PHP以key=>value的形式格式化以后的数据. 方法二,使用file_get_contents("php://input") 对于未指定 Content-Type 的POST数据,则可以使用file_get_contents("php://input");来获取原始数据. 事实上,用PHP接收POST的任何数据均使用本方法.而不用考虑Content-Type,

  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码 复制代码 代码如下: /********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST.HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header: 头文件 * $post: post方式提交 array形式 * $cookies: 0默认无cookie,1为设置,2为获取 */public function curl_allinf

随机推荐