Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сохранить целостность данных 
:(
    Опции темы
bars80080
Дата 17.4.2013, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



возникла заморочка на ровном месте

есть один сервис, куда я отправляю запрос (SOAP) и получаю ответ в виде объекта. 

Код

   respond => Object
      messages => Object
      flights => Object
         flight => Array[128]
            0 => Object
               token => ""
               carrier => Object
                  code => "UT"
                  name => "ЮТэйр"
                  tt_id => "193"
               eticket => "1"
               latinRegistration => ""
...


один параметр этого объекта (token) представляет из себя беспорядочный набор байтов
Код

   messages => Object
   flights => Object
      flight => Array[142]
         0 => Object
            token => "��X[o�F~�_��;��8r-�@WHY��m�Z����i|��!����s���"~R����'Q����3��}�9� V4��:���I�p�DAs����6g�&��(l.ܸD.��?�lq'.�7�g��kSL=���i�Z
E�jc��Nc�����a!��ڀ/{:|o!�%9�XD�
��� F3q��
N���?Š����?E/w�����Lwk�W;�q̢p�Z(y�Wy�1m���^�;�~V4�+mE3:���F����ŶP����$�r�Y��s��S�,T����O���א�saB��ӄz���ɃN��m�&nwz�UpKmh�0\O3i���xZR�T�%�<����/HȾ��B��ΓC�R�cf���'�l�2>v�7�p�Χ�e�hv�a=Gƴ-#%�2�>dN��ł'Iۂ�����>̹�"��<�k���L�*V���~�jW�y�qc �lU6/8r�{w� ��#~L%��,U��"����<�~(�i�ݑsA랋�
�]� �/qy�pQ�&�3���te�~&����1��3�n}%m�B���v�_(w^�z��(+{ƅ���Vw����bg�]�o�m�_Um�@�����i��"N��h̡�i��'(����ڻ��Z�E����&��T��V��4�Όs���e��E���I���������]xp]�%��ɥ� ��v�

Добавлено @ 17:08

при попытке сохранить этот объект (скидываю в файл, затем распаковываю обратно для просмотра и дальнейшего использования), содержимое свойства изменяется:
при попытке свернуть его с помощью serialize, сохраняется только начало, а на каком-то символе происходит обрыв. в результате unserialize уже не способна развернуть объект обратно
при попытке свернуть с помощью json_encode всё содержимое превращается в "token":"\u001f" и всё.

я так понимаю, это в силу того, что набор содержит байты служебного назначения, которые эти функции не переваривают

каким образом можно было бы свернуть объект с полным сохранением данных?

Добавлено @ 17:10
видите, даже сюда запостить не могу, набор байтов функциями этого форума не перевариваются.

(кстати, найдена уязвимость форума)

какой-то байт закончил передачу, в результате чего вторую половину сообщения пришло добавлять (хорошо, я ожидал этого)
PM MAIL WWW   Вверх
krundetz
Дата 17.4.2013, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



bars80080, самый очевидный выход напрямую работать с бинарными данными, а для их хранения разработать собственный способ, например преобразовать бинарные данные в их строковое представление, что то вида
Код

$binDateStr = '101001 000 111';



--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
skyboy
Дата 17.4.2013, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата

видите, даже сюда запостить не могу, набор байтов функциями этого форума не перевариваются.

исправлено расползшееся сообщение
PM MAIL   Вверх
Чучмек
Дата 17.4.2013, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Цитата(bars80080 @  17.4.2013,  17:08 Найти цитируемый пост)
один параметр этого объекта (token) представляет из себя беспорядочный набор байтов

Бинарная строка?
Цитата(bars80080 @  17.4.2013,  17:08 Найти цитируемый пост)
при попытке свернуть его с помощью serialize

А если свернуть только token ?




--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
bars80080
Дата 17.4.2013, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(krundetz @  17.4.2013,  17:48 Найти цитируемый пост)
самый очевидный выход напрямую работать с бинарными данными, а для их хранения разработать собственный способ, например преобразовать бинарные данные в их строковое представление, что то вида

предлагаешь pack(), unpack(), base64_encode() попробовать?

попробуем

Добавлено через 44 секунды
Цитата(Чучмек @  17.4.2013,  23:38 Найти цитируемый пост)
А если свернуть только token ?

так он строка и так. смысл его сворачивать?

Добавлено через 1 минуту и 20 секунд
он же ни капли не измениться? только кавычками по борту обзаведётся
PM MAIL WWW   Вверх
Чучмек
Дата 17.4.2013, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Цитата(bars80080 @  17.4.2013,  23:45 Найти цитируемый пост)
так он строка и так. смысл его сворачивать?

Добавлено через 1 минуту и 20 секунд
он же ни капли не измениться? только кавычками по борту обзаведётся 

Еще добавится тип и длинна. При вызове unserialize учитываются только они.
Я не о том. 
Может виновата структура объекта, а не  
Цитата(bars80080 @  17.4.2013,  17:08 Найти цитируемый пост)
набор содержит байты служебного назначения, которые эти функции не переваривают




--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
bars80080
Дата 18.4.2013, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



сам объект прекрасно сворачивается. у меня две версии этого объекта, сейчас переходим от одной ко второй. основные изменения коснулись методов работы, но в данном объекте изменилось только одно - содержимое свойства token. раньше была человеко-читаемая строка, теперь свалка из байтов, хотя всё прочее осталось без изменений.
так что сам объект очень даже себе валидный и способен к пакованию, что serialize, что json_encode. и только значение token теперь не сохраняется
PM MAIL WWW   Вверх
Fortop
Дата 18.4.2013, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(bars80080 @  17.4.2013,  17:08 Найти цитируемый пост)
при попытке сохранить этот объект

сохраняй это поле отдельно от объекта.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
krundetz
Дата 18.4.2013, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(bars80080 @  17.4.2013,  23:45 Найти цитируемый пост)
предлагаешь pack(), unpack(), base64_encode() попробовать?

да


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
bars80080
Дата 18.4.2013, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



base64_encode очень хорошо проканал. запаковал без вопросов, а затем распаковал в идентичную запись

всем спасибо
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.