Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.08.2008, 01:17
vitlance вне форума Посмотреть профиль Отправить личное сообщение для vitlance Найти все сообщения от vitlance
  № 1  
Ответить с цитированием
vitlance
 
Аватар для vitlance

Регистрация: Sep 2005
Адрес: Moldova - Chishinau City
Сообщений: 413
Отправить сообщение для vitlance с помощью ICQ
По умолчанию PHP искажает XML переданный через POST

Вот в чём проблема... flash посылает xml данные через loadVars в php скрипт.. который выглядет скажем так:

Код:
<ids>
    <id i="5" />
    <id i="126" />
    <id i="3464" />
    <id i="2" />
    <id i="1" />
</ids>
А когда делаеш echo на стороне php, этот xml выглядет так:

Код:
<ids>
    <id i=\"5\" />
    <id i=\"126\" />
    <id i=\"3464\" />
    <id i=\"2\" />
    <id i=\"1\" />
</ids>
Вследствии чего (насколько я понял) когда я парсю xml на стороне php с помощью класса simplexml, выдаёт такое:
Цитата:
Fatal error: Call to a member function attributes() on a non-object in /home/content/i/b/i/ik/html/dev/load.php on line 20
line 20 это:
Код:
foreach($xml->id[$i]->attributes() as $a => $b) {
Ещё что странно это то что на локальном сераке всё работает хорошо и xml не искажается, а на хостинге искажается...
Вопрос, связан ли переформат xml, с этой ошибкой? И что с этим делать?
__________________
Code Different


Последний раз редактировалось vitlance; 15.08.2008 в 02:36.
Старый 15.08.2008, 02:30
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А можно сам ПХП посмотреть? У меня при всем желании такое не получается =)
Код:
<?php
error_reporting(E_ALL);
$string = <<<XML
<ids>
    <id i="5" />
    <id i="126" />
    <id i="3464" />
    <id i="2" />
    <id i="1" />
</ids>
XML;

$xml = new SimpleXMLElement($string);
//print $xml->asXML();
foreach ($xml->xpath("id[@i]") as $a => $b) {
	var_dump($b);
}
?>
Фз, вот, попробуй =)
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 15.08.2008 в 02:54.
Старый 15.08.2008, 03:21
vitlance вне форума Посмотреть профиль Отправить личное сообщение для vitlance Найти все сообщения от vitlance
  № 3  
Ответить с цитированием
vitlance
 
Аватар для vitlance

Регистрация: Sep 2005
Адрес: Moldova - Chishinau City
Сообщений: 413
Отправить сообщение для vitlance с помощью ICQ
Цитата:
Сообщение от wvxvw Посмотреть сообщение
А можно сам ПХП посмотреть? У меня при всем желании такое не получается =)
Код:
<?php
error_reporting(E_ALL);
$string = <<<XML
<ids>
    <id i="5" />
    <id i="126" />
    <id i="3464" />
    <id i="2" />
    <id i="1" />
</ids>
XML;

$xml = new SimpleXMLElement($string);
//print $xml->asXML();
foreach ($xml->xpath("id[@i]") as $a => $b) {
	var_dump($b);
}
?>
Фз, вот, попробуй =)
Всё дело в этом искажении атрибут... на локальном серваке они неискажаются и php невыдаёт еррора и всё работает как по маслу... а на хостинге иксожаются в
Код:
<id i=\"5\" />
И скрипт соответственно выдаёт ошибку... Сам попробуй в своём скрипте посавить эти обратные слэша перед ковычками...

Ты незнаеш отчего может быть это искажение? Или как от него можно избавиться... по сути как убрать эти обратные слэши....??
__________________
Code Different

Старый 15.08.2008, 03:31
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
понятия не имею, у меня все работает и локально и удаленно, я ж говорю, не знаю как такое вообще могло получиться, что там ниоткуда слеши взялись =) Ну, фз, если это так выглядит текст полученный из POST - ну, фз, возьми да замени =)
Цитата:
Сам попробуй в своём скрипте посавить эти обратные слэша перед ковычками...
я что, враг себе? естесственно работать не будет, это не ХМЛ, если там слеши стоят =)
Код:
<?php
error_reporting(E_ALL);
$foo =
"<ids>
    <id i=\\\"5\\\" />
    <id i=\\\"126\\\" />
    <id i=\\\"3464\\\" />
    <id i=\\\"2\\\" />
    <id i=\\\"1\\\" />
</ids>";
/*$string = <<<XML
<ids>
    <id i="5" />
    <id i="126" />
    <id i="3464" />
    <id i="2" />
    <id i="1" />
</ids>
XML;

$xml = new SimpleXMLElement($string);
print $xml->asXML();
foreach ($xml->xpath("id[@*]") as $a => $b) {
	var_dump($b["i"]);
	print $b["i"] . "\r";
}*/
$foo = preg_replace("/\\\/e", "", $foo);
var_dump($foo);
$xml0 = simplexml_load_string($foo);
//print $xml->asXML();
foreach ($xml0->xpath("id[@*]") as $a => $b) {
	var_dump($b["i"]);
	print $b["i"] . "\r";
}
?>


Последний раз редактировалось wvxvw; 15.08.2008 в 03:43.
Старый 15.08.2008, 03:36
vitlance вне форума Посмотреть профиль Отправить личное сообщение для vitlance Найти все сообщения от vitlance
  № 5  
Ответить с цитированием
vitlance
 
Аватар для vitlance

Регистрация: Sep 2005
Адрес: Moldova - Chishinau City
Сообщений: 413
Отправить сообщение для vitlance с помощью ICQ
Цитата:
Сообщение от wvxvw Посмотреть сообщение
понятия не имею, у меня все работает и локально и удаленно, я ж говорю, не знаю как такое вообще могло получиться, что там ниоткуда слеши взялись =) Ну, фз, если это так выглядит текст полученный из POST - ну, фз, возьми да замени =)

я что, враг себе? естесственно работать не будет, это не ХМЛ, если там слеши стоят =)
Хостинг заказщика godaddy.com, (хостинг жопный страшно), токо на нём атрибуты переданные через POST искажаются... Можеш плиз дать рецепт как убрать эти слэши... а то я просто фз, в php не ахти какой сильный...

UPDATED: Всё нашёл красивую функцию stripslashes()

Anyway спасибочки
__________________
Code Different


Последний раз редактировалось vitlance; 15.08.2008 в 03:44.
Старый 15.08.2008, 03:46
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от vitlance Посмотреть сообщение
Хостинг заказщика godaddy.com, (хостинг жопный страшно)
это го-деди жопный-то??? =)
__________________
Hell is the possibility of sanity

Старый 15.08.2008, 03:54
vitlance вне форума Посмотреть профиль Отправить личное сообщение для vitlance Найти все сообщения от vitlance
  № 7  
Ответить с цитированием
vitlance
 
Аватар для vitlance

Регистрация: Sep 2005
Адрес: Moldova - Chishinau City
Сообщений: 413
Отправить сообщение для vitlance с помощью ICQ
Дааа, сколько с ним возни.... у них ещё php5 пока експерементальный, по дефолту php4... я наверно час возился искал как переключится на php5, пока ненаписал им с суппорт, и они мне сказали мол я должен нажать на кнопочку upgrade account, в то время как в хэлпе у них совсем другое написано.. Да и с этим искажением ковычек, я такое первый раз вижу и токо у них... Вообщем лажа....

mediatemple.net - best
__________________
Code Different

Старый 15.08.2008, 04:02
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
он как бы очень даже соответствует цена/качество, ну и в этом отношении - вряд ли найдешь чего-то лучше.
__________________
Hell is the possibility of sanity

Старый 15.08.2008, 04:08
vitlance вне форума Посмотреть профиль Отправить личное сообщение для vitlance Найти все сообщения от vitlance
  № 9  
Ответить с цитированием
vitlance
 
Аватар для vitlance

Регистрация: Sep 2005
Адрес: Moldova - Chishinau City
Сообщений: 413
Отправить сообщение для vitlance с помощью ICQ
Как пишут в (mt) : "There is a cost to "cheap web hosting" - don't let it burn you."

Ж)
__________________
Code Different

Старый 15.08.2008, 10:44
Division вне форума Посмотреть профиль Отправить личное сообщение для Division Найти все сообщения от Division
  № 10  
Ответить с цитированием
Division
 
Аватар для Division

Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
Отправить сообщение для Division с помощью ICQ
Ээ, PHP в школе не проходили? (: Вообще-то php экранирует данные и из post в том числе в целях безопасности. Попробуй в .htaccess отключить magic quotes gpc
Код:
php_value magic_quotes_gpc 0
Если не поможет, используй функцию stripslashes.
Чтобы убрать слеши из всего post можно сделать так:
Код:
function myStripSlashes(&$arr) {
  if (is_array($arr)) {
    foreach($arr as &$el) {
       myStripSlashes($el);
    }
  } else {
    $arr = stripslashes($arr);
  }

}

// ну и потом где-то в коде
myStripSlashes($_POST);
Щас проверю функцию, так как сразу в форуме писал...
UPD: работает (:
UPD2:
Цитата:
UPDATED: Всё нашёл красивую функцию stripslashes()
Черт, не заметил (:
__________________
while(1) {}


Последний раз редактировалось Division; 15.08.2008 в 11:02.
Создать новую тему Ответ Часовой пояс GMT +4, время: 11:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:06.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.