2016-09-30 2 views
0

хорошо добрый вечерПолучение HTTP POST данных на PHP

я имел проблемы ПОЛУЧАТЬ данные из запроса HTTP из C++ программы

Я использую 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

Можете ли вы напечатать_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

, если он не отображается в пустом тексте, вы когда-либо пробовали и сохранили его в db, когда он не отображался в текстовом файле? – Manheim

0

Если вы получаете данные из php://input, но $_POST пусто, то ваши данные POST является НЕ в формате key=value. Если PHP не может найти никаких key=value данных, то он не может построить $_POST для вас. $ _POST - это массив, как любой другой, и все данные, поступающие в него MUST имеют ключ. Нет ключа, нет ввода массива.

+0

как мне это сделать? – Manheim

+0

Вы отвечаете стандартам HTTP для форматирования отправки формы в стиле POST или анализируете все, что вы читаете из php: // введите сами. –

Смежные вопросы