[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запись XML передаваемого методом POST
olegka
Доброго времени суток!
Такая ситуация, есть программа, в которой девочка набирает текст и нажимает кнопку "Отправить".
По кнопке программа стучится на мой сервер по адресу http://.../reciver.php порт 80 и передает туда методом POST XML файл с этим самым текстом. С XML Работать умею, в файл запишу. Мне нужно знать, как я могу словить эти данные.
Переменные $_POST и $HTTP_RAW_POST_DATA пусты. Может мне необходимо поменять что-то в httpd.conf(Конфиге Апача)? Сейф моде у меня выключен, Регистр глобалс включенны.
ОГРОМНОЕ СПАСИБО ЗА ОТВЕТ!



Спустя 16 минут, 40 секунд (11.02.2009 - 15:14) sergeiss написал(а):
Ты бы, что ли (для разнообразия) код показал, что ли... И тот, что отправляет, и тот, который принимает.

Спустя 22 минуты, 36 секунд (11.02.2009 - 15:37) olegka написал(а):
Дак вот именно, что то что отправляет - откомпиленная штука на С++.
А то что принимает, - мой скрипт который пока пуст :-)
Вот мне и интересно какой переменной я могу забрать содержимое запроса. Скрипт будет предельно прост. Я потом запишу этот XML в файл.

Спустя 2 минуты, 24 секунды (11.02.2009 - 15:39) olegka написал(а):
То есть мне нужно как-то его просто вывести, пока. Что-то вроде:

if (!isset($HTTP_RAW_POST_DATA))
$HTTP_RAW_POST_DATA = file_get_contents("php://input");

header("Content-type: text/plain");
echo $HTTP_RAW_POST_DATA;

Спустя 15 минут, 26 секунд (11.02.2009 - 15:55) LoneCat написал(а):
Цитата (olegka @ 11.02.2009 - 16:39)
То есть мне нужно как-то его просто вывести, пока. Что-то вроде:

if (!isset($HTTP_RAW_POST_DATA))
  $HTTP_RAW_POST_DATA = file_get_contents("php://input");

  header("Content-type: text/plain");
  echo $HTTP_RAW_POST_DATA;

А почему isset с отрицанием?

Спустя 14 минут, 36 секунд (11.02.2009 - 16:09) sergeiss написал(а):
Передается что именно - файл целиком? Или его содержимое в виде текстовой переменной?

Чтобы это узнать, посмотри, что у тебя в массивах POST и FILES. Вставь в начале своего скрипта, безо всяких изменений. Запусти и покажи результат.

PHP
echo "POSTs<br>";
foreach(
 $_POST as $k => $val )
{
  echo "POST[$k]=$val<br>";
}
echo "POSTs ended <br>FILES<br>";
foreach(
 $_FILES as $k => $val)
{
    echo "FILES[$k]=".$_FILES[ $k ]['name']."<br>";
}
echo "FILES ended<br>";

Спустя 51 минута, 56 секунд (11.02.2009 - 17:01) olegka написал(а):
Содержимое:
HTML
<?xml version="1.0" encoding="UTF-8"?>
<message rid="1" mid="1" paid="1"><n>3060</n><in>598659</in><body content-type="text/plain">dfgdfhgfh
</body></message>


Скрипт вернул:

HTML
POSTs<br>POSTs ended <br>FILES<br>FILES ended<br>

Спустя 16 минут, 2 секунды (11.02.2009 - 17:17) olegka написал(а):
Вот, кста линк на прогу:
_http://ispcp.org.ua/soft/temp/proga.zip

Спустя 10 минут, 7 секунд (11.02.2009 - 17:28) sergeiss написал(а):
То есть получается, что та самая девочка набрала текст, нажала "Отправить", программа "постучалась" на сервер, но нифига не передала туда?

Тогда ищи проблему на отправляющей стороне. Если я, конечно, правильно понял, что у тебя происходит.

Спустя 7 минут, 37 секунд (11.02.2009 - 17:35) olegka написал(а):
Нет, я должен это принять. Я не знаю, отправилось или нет. Я на локалхост пытаюсь себе отправить хоть что-то. Меня интересует в каких переменных может быть запрос такого типа. Потому как когда отправляю переменная $_POST пуста.
В конечном итоге. я просто должен сохранить себе XML посланный этой прогой. Сохранять буду просто в файл!

Спустя 6 минут, 9 секунд (11.02.2009 - 17:41) sergeiss написал(а):
То, что POST пусто, это уже понятно. Тогда получается, что надо искать проблему с отправкой информации, т.к. она просто не доходит до скрипта.

Спустя 1 час, 7 минут, 56 секунд (11.02.2009 - 18:49) olegka написал(а):
А может не пусто?
Как я могу вывести весь массив Пост? Как узнать какие в него она передает переменные?

Спустя 2 часа, 53 минуты, 13 секунд (11.02.2009 - 21:42) kirik написал(а):
olegka, весь массив пост можно показать так -
PHP
<?php
echo '<pre>';
print_r($_POST);
echo 
'</pre>';

Спустя 1 час, 16 минут, 14 секунд (11.02.2009 - 22:59) sergeiss написал(а):
Цитата (olegka @ 11.02.2009 - 18:49)
А может не пусто?
Как я могу вывести весь массив Пост? Как узнать какие в него она передает переменные?

Я же показывал уже, можно добавить кое-что:
PHP
echo "POSTs, ".count($_POST)." значений в POST<br>";
foreach( 
$_POST as $k => $val )
{
  echo 
"POST[$k]=$val<br>";
}
echo 
"POSTs ended <br>";

И ты проверял. Было пусто. А это значит, что ничего не передается.

Спустя 5 часов, 37 минут, 14 секунд (12.02.2009 - 04:36) olegka написал(а):
Нет, все нормально передается!
PHP
$readfile file_get_contents("php://input");
$fp fopen("file.txt"'a+') or die ("Ошибка открытия файла!");
fputs($fp$readfile);
fclose($fp);

Сори, вычитал на пхп.нет Это поток.

Извините, что продолжаю в этой-же теме, но остался еще вопрос:
Я в файле получаю все в виде:
HTML
<?xml version="1.0" encoding="UTF-8"?>
<message><sуn>99999</sуn><sоn>5475675656</sоn><body content-type="text/plain">епротипе парапр варпар</body></message>


Как мне правильно разложить ХМЛ, и записать все в файл в виде:

99999:::5475675656:::епротипе парапр варпар:::

И каждое сообщение в новой строке, что б потом цыклы делать ;-)

По идее обычно должно работать как-то так:

PHP
$readfile file_get_contents("php://input");
$sуn $xmldoc->getElementsByTagName('sуn');
$sоn $xmldoc->getAttribute('sоn');
$body $xmldoc->getAttribute('body');
$message $sуn."|||".$sоn."|||".$body."|||\n";
$fp fopen("file.txt"'a+') or die ("Ошибка открытия файла!");
fputs($fp$message);
fclose($fp);


Здесь и написал, потому как всем уже видно откуда и что за ХМЛ я беру. Спасибо.
ОГРОМНОЕ СПАСИБО ЗА ВАШИ ОТВЕТЫ!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.