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

时间:2023-11-19 00:45:21 

废话不多说。直接上代码:
sock_post.php:


<?php
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,post
0
投稿

猜你喜欢

  • 使用Python编写爬虫的基本模块及框架使用指南

    2021-08-21 17:45:19
  • 使用Flask-Cache缓存实现给Flask提速的方法详解

    2022-11-12 23:06:03
  • win10安装tensorflow-gpu1.8.0详细完整步骤

    2023-01-22 08:44:33
  • Python操作MySQL数据库9个实用实例

    2024-01-25 19:28:40
  • asp如何实现人民币的大写转换?

    2010-05-24 18:27:00
  • MySQL数据库连接异常汇总(值得收藏)

    2024-01-22 16:23:55
  • 成功解决ValueError: Supported target types are:('binary', 'multiclass'). Got 'continuous' instead.

    2023-01-24 03:59:00
  • 详解SQL Server分布式查询

    2010-09-19 09:07:00
  • 教你如何利用Python批量翻译英文Word文档并保留格式

    2022-10-18 21:27:17
  • python中matplotlib的颜色及线条控制的示例

    2023-11-04 08:11:50
  • 发布你的Python模块详解

    2021-06-10 02:03:53
  • Vue0.1的过滤代码如何添加到Vue2.0直接使用

    2024-05-22 10:41:57
  • 详解vue+vueRouter+webpack的简单实例

    2024-04-09 10:49:52
  • 解决Python spyder显示不全df列和行的问题

    2021-06-23 00:15:47
  • Python数据模型与Python对象模型的相关总结

    2021-05-15 02:21:43
  • Python进程间通讯与进程池超详细讲解

    2023-09-05 16:50:41
  • php实现的微信分享到朋友圈并记录分享次数功能

    2023-10-17 04:32:14
  • 详解Python中的分支和循环结构

    2023-07-19 11:56:21
  • ASP使用组件在线发E-mail的2个函数

    2008-06-12 07:13:00
  • 12个步骤教你理解Python装饰器

    2021-01-25 18:28:56
  • asp之家 网络编程 m.aspxhome.com