- 浏览: 410530 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wcjagta:
...
dedecms插件开发教程 -
xc2013:
看起来不错 先下载来试试
ECSHOP完全静态化解决方法 -
greemranqq:
你好,我在xp 上做实验,也是JS css带不过来,关于 ro ...
nginx资源定向 css js路径问题 -
hotsmile:
表结构给出来吧,测试的提示说要注册,
中国移动CMPP短信开发平台通讯包 2.8 -
mengdejun:
gang80306176 写道这个插件怎么用和安装普通插件一样 ...
phpcms2008 sp4单网页编辑器插件
function httpRequestGET($url){ $url2 = parse_url($url); $url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]); $url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]); $host_ip = @gethostbyname($url2["host"]); $fsock_timeout=20; if(($fsock = fsockopen($host_ip, 80, $errno, $errstr, $fsock_timeout)) < 0){ return false; } $request = $url2["path"] . ($url2["query"] != "" ? "?" . $url2["query"] : "") . ($url2["fragment"] != "" ? "#" . $url2["fragment"] : ""); $in = "GET " . $request . " HTTP/1.0\r\n"; $in .= "Accept: */*\r\n"; $in .= "User-Agent: Payb-Agent\r\n"; $in .= "Host: " . $url2["host"] . "\r\n"; $in .= "Connection: Close\r\n\r\n"; if(!@fwrite($fsock, $in, strlen($in))){ fclose($fsock); return false; } unset($in); $out = ""; while($buff = @fgets($fsock, 2048)){ $out .= $buff; } fclose($fsock); $pos = strpos($out, "\r\n\r\n"); $head = substr($out, 0, $pos); //http head $status = substr($head, 0, strpos($head, "\r\n")); //http status line $body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page body if(preg_match("/^HTTP\/\d\.\d\s([\d]+)\s.*$/", $status, $matches)){ if(intval($matches[1]) / 100 == 2){ return $body; }else{ return false; } }else{ return false; } } function httpRequestPOST($url,$post_data){ $url2 = parse_url($url); $url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]); $url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]); $host_ip = @gethostbyname($url2["host"]); $fsock_timeout=20;//秒 if(($fsock = fsockopen($host_ip, 80, $errno, $errstr, $fsock_timeout)) < 0){ return false; } $request = $url2["path"] . ($url2["query"] != "" ? "?" . $url2["query"] : "") . ($url2["fragment"] != "" ? "#" . $url2["fragment"] : ""); $needChar = false; foreach($post_data as $key => $val) { $post_data2 .= ($needChar ? "&" : "") . urlencode($key) . "=" . urlencode($val); $needChar = true; } $in = "POST " . $request . " HTTP/1.0\r\n"; $in .= "Accept: */*\r\n"; $in .= "Host: " . $url2["host"] . "\r\n"; $in .= "User-Agent: Lowell-Agent\r\n"; $in .= "Content-type: application/x-www-form-urlencoded\r\n"; $in .= "Content-Length: " . strlen($post_data2) . "\r\n"; $in .= "Connection: Close\r\n\r\n"; $in .= $post_data2 . "\r\n\r\n"; unset($post_data2); if(!@fwrite($fsock, $in, strlen($in))){ fclose($fsock); return false; } unset($in); $out = ""; while($buff = fgets($fsock, 2048)){ $out .= $buff; } fclose($fsock); $pos = strpos($out, "\r\n\r\n"); $head = substr($out, 0, $pos); //http head $status = substr($head, 0, strpos($head, "\r\n")); //http status line $body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page body if(preg_match("/^HTTP\/\d\.\d\s([\d]+)\s.*$/", $status, $matches)){ if(intval($matches[1]) / 100 == 2){ return $body; }else{ return false; } }else{ return false; } }
$post_data = array("name"=>"xd","sex"=>"man"); httpRequestPOST("http://localhost/post.php",$post_data);
socket写的顺序:
POST /post.php HTTP/1.0
Accept: */*
Host: localhost
User-Agent: Lowell-Agent
Content-type: application/x-www-form-urlencoded
Content-Length: 15
Connection: Close
name=xd&sex=man
普通POST的结果演示:
POST/?username=111&password=222HTTP/1.1
Host:127.0.0.1:8000
User-Agent:Mozilla/5.0(Windows;U;WindowsNT5.2;zh-CN;rv:1.9.0.1)Gecko/2008070208Firefox/3.0.1
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:zh-cn,zh;q=0.5
Accept-Encoding:gzip,deflate
Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive:300
Connection:keep-alive
Referer:http://127.0.0.1:8000/?username=111&password=222
Content-Type:application/x-www-form-urlencoded
Content-Length:25
username=111&password=222
GET的运行结果演示:
GET/?username=111&password=222HTTP/1.1
Host:127.0.0.1:8000
User-Agent:Mozilla/5.0(Windows;U;WindowsNT5.2;zh-CN;rv:1.9.0.1)Gecko/2008070208Firefox/3.0.1
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:zh-cn,zh;q=0.5
Accept-Encoding:gzip,deflate
Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive:300
Connection:keep-alive
Referer:http://127.0.0.1:8000/?username=1&password=2
POST文件上传的结果演示:
POST/?username=111&password=222HTTP/1.1
Host:127.0.0.1:8000
User-Agent:Mozilla/5.0(Windows;U;WindowsNT5.2;zh-CN;rv:1.9.0.1)Gecko/2008070208Firefox/3.0.1
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:zh-cn,zh;q=0.5
Accept-Encoding:gzip,deflate
Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive:300
Connection:keep-alive
Referer:http://127.0.0.1:8000/?username=111&password=222
Content-Type:multipart/form-data;boundary=---------------------------23757983230932
Content-Length:1704
-----------------------------23757983230932
Content-Disposition:form-data;name="phototitle"
12
-----------------------------23757983230932
转自:http://blog.bigqi.com/read.php?157
发表评论
-
php异步操作类库
2011-06-05 16:01 1845httpclient for php 的选择常用方案有以 ... -
织梦HTTP IMAGE下载类
2011-06-05 14:57 1883<?php if(!defined('DEDEINC ... -
php汉字转拼音
2011-06-05 14:41 1620<?php /**************** ... -
PHP采集利器:Snoopy 试用心得
2011-06-05 14:34 14086Snoopy是一个php类,用 ... -
php异步调用 提高用户体验
2011-05-30 14:22 1330这是我的一个技术很好的朋友写的,要我发表在我的博客上可让php ... -
PHP 异步调用 后台调用 持续执行 断开连接/浏览器
2011-05-26 10:31 1731标题很怪,因为我也 ... -
php socket GET POST提交方法(HttpClient) 框架
2011-05-25 18:29 5566<?php /* Version 0.9, 6th ... -
mantis
2011-05-25 09:50 1300mantis 缺陷管理平台Mantis,也做Mantis ... -
Curl参数一览
2011-05-06 17:30 1490* 目录 1. 介绍 ... -
PHPRPC
2011-04-24 11:01 1334PHPRPC 是一个轻型的、安全的、跨网际的、跨语言的、跨平台 ... -
PHP身份证验证程序
2011-04-24 10:56 1279<?php // 计算身份证校验码,根据国家标准GB 116 ... -
nginx 502 Bad Gateway 错误问题收集
2011-04-23 09:43 1815502是FastCGI出现问题,所以从FastCGI配置入手。 ... -
深入理解PHP内存管理之谁动了我的内存
2011-04-12 21:57 857首先让我们看一个问题: ... -
socket模拟post表单
2011-04-11 15:40 2845post的本质就是发送给目的程序一个标志为post的协议串如下 ... -
OAUTH协议
2011-04-09 09:59 1139OAUTH协议为用户资源的 ... -
nginx/windows: 让nginx以服务的方式运行
2011-04-09 09:33 1162在windows下安装了nginx, 郁闷是发现它没有以服 ... -
ThinkPHP处理海量数据分表机制详细代码
2011-04-07 18:27 7236应用ThinkPHP内置的分表算法处理百万级用户数据. ... -
php 分库分表hash算法
2011-04-07 18:16 1707//分库分表算法 function calc_hash_d ... -
nginx配置文件实例: php (fastcgi), perl, proxy, rrd, nagios
2011-04-06 20:33 1869nginx.conf worker_processes 5; ... -
Nginx location 指令的使用(中文翻译)
2011-04-06 20:31 1200location syntax: location [=|~ ...
相关推荐
在现代网络开发中,使用PHP进行Socket编程是一种常见的需求,尤其在模拟HTTP请求方面。本文将深入探讨如何使用PHP的Socket编程来模拟HTTP的GET和POST请求。我们将从一个PHP类开始,该类能够构建HTTP请求并处理响应,...
以下是一个简单的PHP Socket模拟POST请求的示例代码: ```php function socket_post($url, $data, $referer='') { if (!is_array($data)) { return; } $data = http_build_query($data); $url = parse_url($...
在Web开发中,通常我们使用cURL或者file_get_contents函数发送HTTP请求,但当需要更底层、更灵活的网络通信时,socket提供了一个低级别的接口。通过socket,开发者可以直接与服务器进行数据交换,实现POST数据的发送...
本文介绍了PHP中模拟POST请求的三种方法:使用cURL、使用file_get_contents和使用fsockopen。每种方法都有自己的特点和适用场景。cURL是最常用的方法,因为它功能强大且易于使用;file_get_contents更适合简单的HTTP...
下面的代码展示了如何使用`socket`函数模拟POST和GET请求: 1. **创建socket连接**: 首先,我们需要解析目标URL以获取主机名和端口,然后使用`fsockopen()`函数建立TCP连接。如果无法打开连接,该函数返回错误...
利用PHP的fsockopen函数可以模拟向其他网页或站点发送HTTP请求,具体来说,可以通过模拟POST和GET方法来传送数据。下面详细说明如何使用fsockopen函数来完成这一任务。 首先,要理解fsockopen函数是PHP中用于打开...
在PHP中,模拟POST提交是常见的任务,通常用于与服务器进行交互、自动化测试或执行API调用。以下四种方法展示了如何在PHP中实现POST提交: 1. **使用cURL库** cURL库是PHP中广泛使用的HTTP客户端,它允许开发者...
本文实例讲述了php自定义类fsocket模拟post或get请求的方法。分享给大家供大家参考。具体如下: zsocket.class.php文件如下: <?php class ZSocket { /* * Init */ private function _fsockopen($host, ...
在PHP中,可以通过fsockopen函数创建一个socket连接来模拟POST请求。在示例代码中,我们看到`$ps`数组用于存储POST参数,然后通过`urlencode`函数编码键值对,并将它们添加到`$posts`字符串中。最后,使用`fputs`将...
在PHP编程中,有时我们需要模拟HTTP请求,例如发送POST或GET数据到远程服务器,获取响应内容,或者测试API接口。本文将深入探讨如何使用PHP实现模拟HTTP请求,并分析其背后的原理和步骤。 首先,理解HTTP请求的基本...
在PHP编程中,fsockopen函数是用于打开一个网络连接或者一个Unix套接字连接的内置...通过本文的介绍和示例代码的分析,我们可以了解到如何使用fsockopen来模拟GET和POST请求,并且对HTTP请求的构造有了更深入的理解。