[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP/XML
Pandion
Подскажите, как передать данные с одного сайта на другой с помощью php и xml



Спустя 5 минут, 39 секунд (3.10.2011 - 18:20) caballero написал(а):
на другой непросто - а получить с другого никаких проблем
генерите xml и отдаете его по обычному url только в заголовке указываете что это xml

хотя как показывает практика в конечном итоге под вопросом "передать" и "на другой сайт" через пару постов окажется что имелось в виду нечто совсем иное

Спустя 51 секунда (3.10.2011 - 18:21) Winston написал(а):
Цитата (caballero @ 3.10.2011 - 18:20)
как показывает практика в конечном итоге под вопросом "передать" и "на другой сайт" через пару постов окажется что имелось в виду нечто совсем иное

+100500 biggrin.gif

Спустя 6 минут, 4 секунды (3.10.2011 - 18:27) Pandion написал(а):
Цитата (caballero @ 3.10.2011 - 15:20)
генерите xml и отдаете его по обычному url только в заголовке указываете что это xml

спасибо, а можно маленький примерчик?

Спустя 7 минут, 40 секунд (3.10.2011 - 18:34) kovalevsky написал(а):
header("Content-type: text/xml");

Спустя 13 минут, 12 секунд (3.10.2011 - 18:48) caballero написал(а):
Цитата
спасибо, а можно маленький примерчик?


XML - это текстовый формат - для его генерации кроме echo ничего не нужно
ну и заголовок как выше
хотя опять же не совсем понятно что с этим будет делать приемная сторона
если просто парсить как xml на сервере - тут уже надо как минимум SimpleXML) то и заголовок не нужен

Спустя 7 минут, 2 секунды (3.10.2011 - 18:55) Игорь_Vasinsky написал(а):
SimpleXML - на платных уж везде стоят, бесплатные иногда жмотят.


А зачем именно в XML формате? что за данные?

Спустя 23 минуты, 24 секунды (3.10.2011 - 19:18) Pandion написал(а):
Несколько переменных нужно передать на другой сайт и там ввести их в свою бд (знаю, что можно проще, но нужно xml)

не очень понятно куда вставлять заголовок?

Спустя 2 минуты, 57 секунд (3.10.2011 - 19:21) Winston написал(а):
Попробуй курлом отправить, а на приемнике принимай и записывай в БД.

Спустя 36 секунд (3.10.2011 - 19:22) Invis1ble написал(а):
Pandion
Цитата
не очень понятно куда вставлять заголовок?

мда... перед выводом

Спустя 4 минуты, 32 секунды (3.10.2011 - 19:26) Pandion написал(а):
Цитата (Winston @ 3.10.2011 - 16:21)
Попробуй курлом отправить, а на приемнике принимай и записывай в БД.

нужно xml

Спустя 3 минуты, 23 секунды (3.10.2011 - 19:29) Invis1ble написал(а):
причем здесь xml, Winston тебе говорит что передающий сервер может инициализировать соединение с помощью cURL
возьми и передай к примеру post'ом данные в формате хоть xml, хоть json хоть wtfml

Спустя 4 минуты, 43 секунды (3.10.2011 - 19:34) Winston написал(а):
сокеты/curl + serialize или возможно json_encode и отправлять на сервре.

Спустя 11 минут, 46 секунд (3.10.2011 - 19:46) caballero написал(а):
зачем тут CURL
и file_get_contents сойдет

file_get_contents('http:://mysite/getxml.php');


getxml.php:

Header("Content-Type: text/xml;charset=UTF-8");
echo '<?xml version="1.0" encoding="utf-8"?>'
echo bla-bla-bla

Спустя 12 минут, 33 секунды (3.10.2011 - 19:58) Pandion написал(а):
Цитата (caballero @ 3.10.2011 - 16:46)
зачем тут CURL
и file_get_contents сойдет

file_get_contents('http:://mysite/getxml.php');


getxml.php:

Header("Content-Type: text/xml;charset=UTF-8");
echo '<?xml version="1.0" encoding="utf-8"?>'
echo bla-bla-bla

и результат ф-ии передать через URL? Как тогда из урла взять эти переменные?

Спустя 7 минут, 13 секунд (3.10.2011 - 20:06) caballero написал(а):
с урла выберете ч то что ве рнет file_get_contents
то есть содержимое которое вы нагенерили
в данном случае xml которой вы хотели

при чем тут результат какой то функции и какие то переменные

file_get_contents на приемной стороне остальное на передающей

Спустя 7 часов, 36 минут, 48 секунд (4.10.2011 - 03:43) Pandion написал(а):
Передал так:
    $url = 'http://test.ru/index2.php';
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>'
.$name.'</name>
<email>'
.$email.'</email>
<date>'
.$date.'</date>
</user>'
;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml"));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
$result = curl_exec($ch);
curl_close($ch);


Но какую переменную мне обрабатывать в приёмнике? Пытался $_POST['xml'], пишет "нет такой"

Спустя 11 минут, 52 секунды (4.10.2011 - 03:54) Игорь_Vasinsky написал(а):
Если я правильно понял мысль, то тебе там понадобиться ещё и форма....
и http://phpforum.ru/index.php?showtopic=50868

хотя чёт сомнительное моё соображение.. но по моему на удал хосте по другому данные не принять.. хз

Спустя 2 часа, 52 минуты, 30 секунд (4.10.2011 - 06:47) Pandion написал(а):
Записал так и смог получить в приёмнике переменную:
Передатчик:
    $url = 'http://test.ru/index2.php';
$xml['request'] = '<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>'
.$name.'</name>
<email>'
.$email.'</email>
<date>'
.$date.'</date>
</user>'
;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// curl_setopt ($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml"));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$xml);
$result = curl_exec($ch);
curl_close($ch);

Приёмник:
$xml = $_POST['request'];

Но распарсить не получается. Пишу:
$xmlstr = new SimpleXMLElement($xml);
echo $xmlstr->user->name;

Но ничего не выводится. Но и ошибок нет

Спустя 1 час, 6 минут, 53 секунды (4.10.2011 - 07:54) linker написал(а):
Первое, с чем нужно было определиться, прежде чем разворачивать простыню постов на две страницы, это кто инициализирует передачу/приём. От этого будут зависеть алгоритмы работы передатчика и приёмника.

1. Приёмник инициализирует передачу. Значит приёмнику достаточно
$xml = file_get_contents('http://site.ru/send.php'); 
$dom = simple_load_string($xml);
а серверу достаточно просто выдать соответствующий заголовок
header("Content-Type: text/xml");
а дальше тупо отдать текст xml
echo $xml = '<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>'
.$name.'</name>
<email>'
.$email.'</email>
<date>'
.$date.'</date>
</user>'
;


2. Передачу инициализирует передатчик. Значит берём в руки curl

$xml['request'] = '<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>'
.$name.'</name>
<email>'
.$email.'</email>
<date>'
.$date.'</date>
</user>'
;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://site.ru/receive.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_exec($ch);
curl_close($ch);
в приёмнике соответственно print_r($_POST);
Быстрый ответ:

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