`

php socket模拟http中post或get提交数据

    博客分类:
  • PHP
阅读更多
php socket模拟http中post或者get提交数据的示例代码。

代码:
sock_post.php:
<?php
/**
* php socket模拟post\get请求
* 编辑:脚本学堂 http://www.jbxue.com
*/
function sock_post($url, $data='') {
  $url = parse_url($url);
  $url['scheme'] || $url['scheme'] = 'http';
  $url['host'] || $url['host'] = $_SERVER['HTTP_HOST'];
  $url['path'][0] != '/' && $url['path'] = '/'.$url['path'];

  $query = $data;
  if(is_array($data)) $query = http_build_query($data);

  $fp = @fsockopen($url['host'], $url['port'] ? $url['port'] : 80);
  if (!$fp) return "Failed to open socket to $url[host]";

  fputs($fp, sprintf("POST %s%s%s HTTP/1.0/n", $url['path'], $url['query'] ? "?" : "", $url['query']));
  fputs($fp, "Host: $url[host]/n");
  fputs($fp, "Content-type: application/x-www-form-urlencoded/n");
  fputs($fp, "Content-length: " . strlen($query) . "/n");
  fputs($fp, "Connection: close/n/n");

  fputs($fp, "$query/n");

  $line = fgets($fp,1024);

  if (@!eregi("^HTTP/1/.. 200", $line))  return;

  $results = "";
  $inheader = 1;
  while(!feof($fp)) {
    $line = fgets($fp,1024);
    if ($inheader && ($line == "/n" || $line == "/r/n")) {
      $inheader = 0;
    }elseif (!$inheader) {
      $results .= $line;
    }
  }
  fclose($fp);

  return $results;
}
 $re = sock_post('http://localhost/direct_post/get_post.php?id=1',array('wel'=>'hello'));
 echo $re;
?>


get_post.php:
<?php
echo "post:";
print_r($_POST);
echo 'get:';
print_r($_GET);
?>
分享到:
评论

相关推荐

    php中用socket模拟http中post或者get提交数据的示例代码

    在PHP中,有时候我们需要模拟HTTP协议的POST或GET方法来发送数据到远程服务器,例如进行API调用或者与不支持curl扩展的服务器交互。本文将详细介绍如何使用PHP的socket功能来实现这一目标。 首先,我们要了解HTTP...

    使用PHP Socket 编程模拟Http post和get请求

    本文将深入探讨如何使用PHP的Socket编程来模拟HTTP的GET和POST请求。我们将从一个PHP类开始,该类能够构建HTTP请求并处理响应,此外还将分享代码示例,并讨论其它PHP模拟HTTP请求的方法。 首先,PHP中模拟HTTP请求...

    PHP HTTP客户端(GET POST SOAP SOCKET)

    POST用于提交数据,适用于更新或创建资源,数据隐藏在请求体中。 在PHP中,可以使用cURL库或者file_get_contents函数来实现HTTP请求。例如,使用cURL发送GET请求的代码如下: ```php $ch = curl_init(); curl_...

    PHP中的POST&GET的应用.docx

    在PHP中,可以通过fsockopen函数创建一个socket连接来模拟POST请求。在示例代码中,我们看到`$ps`数组用于存储POST参数,然后通过`urlencode`函数编码键值对,并将它们添加到`$posts`字符串中。最后,使用`fputs`将...

    php-socket拟POST.doc

    描述中提到的“模拟get方式,直接用file_get_content就行了”,这是指在PHP中获取HTTP GET请求数据时,可以简单地使用file_get_contents函数,它会自动处理HTTP GET请求并返回响应内容。然而,对于POST请求,由于...

    PHP模拟POST登录

    PHP POST数据的三种方法 php有三种方法可以post数据,分别为Curl、socket、file_get_contents:

    php模拟POST提交的4种方法.pdf

    在PHP编程中,有时我们需要模拟HTTP POST请求,例如在测试API接口、自动化脚本或进行数据传输时。本文将详细介绍四种在PHP中实现POST提交的方法。 1. **使用cURL库** cURL是一个用于传输数据的库,支持多种协议,...

    利用PHP fsockopen 模拟POST/GET传送数据的方法

    利用PHP的fsockopen函数可以模拟向其他网页或站点发送HTTP请求,具体来说,可以通过模拟POST和GET方法来传送数据。下面详细说明如何使用fsockopen函数来完成这一任务。 首先,要理解fsockopen函数是PHP中用于打开...

    PHP模拟post提交数据方法汇总

    以下介绍的三种方法——file_get_contents、curl和socket,都是PHP中实现模拟POST提交的有效手段。 1. **file_get_contents方法**: 这个函数通常用于读取远程文件,但通过设置HTTP选项,也可以实现POST提交。在...

    HttpClient:php使用socket模拟post、get操作,支持http、socket4、5代理

    GET请求 $ http = new HttpClient ();$ http -&gt; set_header ( 'User-Agent' , 'Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0.1' ); $ http -&gt; get ( 'http://www.example.com/' ); echo $ ...

    php socket http

    但可以猜测,这可能包含了实现PHP Socket HTTP服务器的部分代码,或者是一些用于测试服务器功能的模拟数据。 总结,PHP Socket HTTP涉及了网络编程和HTTP协议的基础知识,通过创建和管理套接字,我们可以建立自定义...

    php自定义类fsocket模拟post或get请求的方法

    下面将详细介绍fsocket类中包含的方法以及模拟GET和POST请求的具体实现。 首先,fsocket类的构造方法中初始化了几个私有函数,它们分别用于处理不同的任务: 1. _fsockopen函数用来初始化socket连接。它会尝试解析...

Global site tag (gtag.js) - Google Analytics