2016-09-30 64 views
0

好,晚上好在PHP接收HTTP POST数据

我一直有问题,从C++程序的http请求recieving数据

我用Wininet

InternetOpenA() 
InternetConnect() 
HttpOpenRequest() 
HttpSendRequest() 

现在的好消息是它发送该程序的PHP文件,现在不用担心所有的工作罚款有

当我做这样的代码来获取POST数据

<?php 
$data = file_get_contents(php://input); 
$fp = fopen("log.txt","a+"); 
fwrite($fp,$data); 
fclose($fp); 
?> 

它获取数据并保存到文本文件。但当我做以下

<?php 
$data = urldecode($_POST['info']); 
$fp = fopen("log.txt","a+"); 
fwrite($fp,$data); 
fclose($fp); 
?> 

它只是创建log.txt并不保存其中的任何数据。开始认为这是一个PHP的问题,但我试过的每一件事都失败了......有什么可能是错的?

+0

你可以print_r($ _ POST);?你确定你是用正确的内容类型发布数据吗? (application/x-www-form-urlencoded) –

+0

是的,我正在使用我在这里找到的帖子http://securityblog.gr/1823/http-post-and-get-requests-with-wininet-and-c/ – Manheim

+0

无论如何,只要你能缩小问题的范围,'$ _POST'是空的还是不是?同样在你的C++代码中编辑,你链接的例子不会发送一个名为'info'的字段。 –

回答

0

从经验来看,fopen对我造成了很多错误,它并不总是适用于某些方面。 创建一个mysql数据库并将日志数据保存在那里,您可以使用C++程序创建一个页面/连接到它以获取日志。

+0

如果它不显示空文本,你曾经试过,它保存在分贝,当它没有显示在文本文件? – Manheim

0

如果从php://input获取数据,但$_POST是空的,那么你的POST数据不是在key=value格式。如果PHP找不到任何key=value数据,则无法为您建立$_POST。 $ _POST是一个像其他任何数组一样的数组,所有进入它的数据都必须有必须。没有键,没有数组输入。

+0

我该如何解决这个问题? – Manheim

+0

您遵守用于格式化POST风格表单提交的HTTP标准,或者您自己解析从php://输入中读取的任何内容。 –