Обработка XML с помощью PHP

RealFikus

Добрый день!
Столкнулся со следующей задачей. Есть такая контора smstraffic.ru, которая занимается рассылкой sms-сообщений. Моя контора захотела посылать своим клиентам информационные sms. Для отсылки sms-сообщений, надо передать скрипту, расположенному на сайте данной конторы методом POST несколькпо параметров: логин, пароль, список телефонов, сообщение.
Т.е. фактически надо перейти по url-у: http://smstraffic.ru/../script.php?login=mylogin&pwd=my...,79162222222&message=Test
В ответ данный скрипт выдает xml-документ следующего вида:
<?xml version="1.0" ?> 
- <reply>
<result>OK</result>
<code>0</code>
<description>queued 2 messages</description>
- <message_infos>
- <message_info>
<phone>79261111111</phone>
<sms_id>111111111</sms_id>
</message_info>
- <message_info>
<phone>79162222222</phone>
<sms_id>2222222222</sms_id>
</message_info>
</message_infos>
</reply>

У меня нет проблем с тем, чтобы просто по нажатию кнопки отправить сообщения. Я завел таблицу в MySQL базе. В таблице два столбца номер телефона и id. По нажатию кнопки в форме из данной таблицы выбираются все телефоны и составляются в строчку через запятую. Эта строчка подставлятся переменнйо phone, в запросе для скрипта. Все данные передаются скрипту и на экране я вижу выше приведенный xml-документ.
Возник вопрос о том как скрыть данный xml от пользователя, чтобы он обрабатывался в фоне и в мою таблицу в MySQL подставлялись для каждого телефона sms_id.
В интернете находил примерные решения на JavaScript, но мне требуется на PHP.
На PHP в голову сразу пришло решение использовать функцию fopen, чтобы открывать данный xml-как файл и обрабатывать его с помощью регулярных выражений.
Однако fopen при запуске макроса ругается и говорит, что не может открыть файл, т.к. он через https. а не http.
Использовать Curl, не хочется так как нужна переносимость, а Curl стоит сейчас не на всех серверах.
Извиняюсь за возможный сумбур. Я очень надеюсь, что кто-нибудь подскажет какое-нибудь решение данной проблемы. Лучше всего наверное если подскажите как научить fopen открывать файлы и через https. Заранее спасибо.

stalker33rus10

Вечером буду дома, могу дать кусок решения для твоей цели.
А вобще, по-моему, там нужно юзать не fopen, a fsockopen, и все будет ок.

RealFikus

Спасибо. С нетерпеним жду вечера.

stalker33rus10

У меня работало просто:
$host="host.ru";
$path="/path/to_file";
$h=fsockopen($host,80);
$query="POST-данные"
$post="POST $path HTTP/1.1\r\nHost: $host\r\nContent-type: application/x-www-form-urlencoded\r\nUser-Agent: Mozilla 4.0\r\nContent-length: ".strlen($query)."\r\nConnection: close\r\n\r\n".$query;
fwrite($h,$post);
$r="";
for($a=0,$r='';!$a;){
$b=fread($h,8192);
$r.=$b;
$a$b=='')?1:0);
}
fclose($h);

alexkravchuk

> $h=fsockopen($host,80);
Да, стоило ради этого ждать вечера...
Однако fopen при запуске макроса ругается и говорит, что не может открыть файл, т.к. он через https. а не http.

RealFikus

Работает. Большое спасибо.

stalker33rus10

Заметь, стоило

alexkravchuk

Только одного не понимаю - причём тут https
Кстати, ещё не понимаю, как в общем случае бороться с chunk'ами, которые на многих серверах есть... Всё же неправильно всё пытаться самостоятельно реализовать, хотя в какой-то степени иногда полезно.
Оставить комментарий
Имя или ник:
Комментарий: