免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11477 | 回复: 16
打印 上一主题 下一主题

[分享]POST的原始数据获得方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-22 17:49 |只看该作者 |倒序浏览
XX软件,去联接hxxp://www.test.com:80
当通信联接好后这个XX软件就发送一段序列比如:abc123
然后php运算后,反回一段111aaa字符给这个软件,最后软件运行相应的功能。

如果这个XX软件发送123456,php运算后就返回abcdef


这样的php应该怎么写呢?


我试着用$_GET,这个变量,可是捕捉不到 这个XX软件发送的序列!

还请GGJJ不吝赐教!

[ 本帖最后由 别爱我我没钱 于 2007-12-23 18:23 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-12-23 09:41 |只看该作者
或者在google上搜什么样的关键字呢?
我搜了半天php第一次会话,可还是没有找到相关的内容!!

论坛徽章:
0
3 [报告]
发表于 2007-12-23 09:53 |只看该作者
软件端执行命令类似于  "get www.xxx.com:80/test.php?action=edit&aid=123"

php程序做出响应的代码为

<?php

if ($_GET['action'] == 'edit')
{
      echo "edit!!!!";
}
if($_GET['aid'] > 0)
{
      echo 'aid ok!';
}
?>

论坛徽章:
0
4 [报告]
发表于 2007-12-23 10:06 |只看该作者
我最近也在做程序端和php交互的工作. 你注意一下,如果客户端发送的http请求不规范,php可能会忽略发送的信息. 这个时候用 $_SERVER 看不到客户端发送的信息

论坛徽章:
0
5 [报告]
发表于 2007-12-23 16:46 |只看该作者
也就是说,基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。

--------------------------------------------------------------------------------
补充说明一下。PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。

论坛徽章:
0
6 [报告]
发表于 2007-12-23 17:20 |只看该作者
Errrrrrrrr

我这里客户端post信息不规范用 $GLOBALS 或者 $_SERVER 都看不见........ 最后抓了本地表单的包仿写了一个才解决

论坛徽章:
0
7 [报告]
发表于 2007-12-23 18:22 |只看该作者
谢谢你的参于,我的问题已经自己解决方法如下:
file_get_contents("php://input");
用这个可以直接得到POST过来的最原始数据

$key=file_get_contents("php://input");
把这个原始数据传给key

这样就可以使用$key来处理这个原始数据了!!!

论坛徽章:
0
8 [报告]
发表于 2007-12-23 18:42 |只看该作者
原帖由 achieverain 于 2007-12-23 17:20 发表
Errrrrrrrr

我这里客户端post信息不规范用 $GLOBALS 或者 $_SERVER 都看不见........ 最后抓了本地表单的包仿写了一个才解决

如何仿写的呢,说来听听!!
把过程写一下,这样不更好!!

论坛徽章:
0
9 [报告]
发表于 2007-12-23 22:27 |只看该作者
以下是从同事那里抢的c++ 代码
   SetRequestLine(_T("POST"), _T("http://192.168.1.101/post.php"), _T("HTTP/1.1"));
    SetRequestHeader(_T("Accept"), _T("*/*"));
    SetRequestHeader(_T("Accept-Encoding"), _T("gzip, deflate"));
    SetRequestHeader(_T("Accept-Language"), _T("zh-cn"));
    SetRequestHeader(_T("Content-Type"), _T("application/x-www-form-urlencoded"));
    SetRequestHeader(_T("Cache-Control"), _T("no-cache"));
    SetRequestHeader(_T("Content-Length"), CA2T(os.str().c_str()));
    SetRequestHeader(_T("Connection"), _T("close"));
    SetRequestHeader(_T("User-Agent"), _T("Mozilla/4.0 (compatible;\
                                          MSIE 7.0; Windows NT 5.1;\
                                          POTU(RR:27082316:0:5104704);\
                                          .NET CLR 1.1.4322; .NET CLR 2.0.50727;\
                                          .NET CLR 3.0.04506.30)"));


没有想到用 php://input  一直用的$_POST

[[i] 本帖最后由 achieverain 于 2007-12-23 22:28 编辑 [/i]]

论坛徽章:
0
10 [报告]
发表于 2007-12-24 08:49 |只看该作者
没有想到用 php://input  一直用的$_POST




$_POST也会有一些过滤,但具体怎么过滤,我就不知道,我也只是因为这个问题才刚接触php

非常谢谢你能这么积极讨论这个贴子,非常让我感动!!!
你一定是一个好人,赞一个:wink:

[ 本帖最后由 别爱我我没钱 于 2007-12-24 08:53 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP