| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > сохранить целостность данных |
| Автор: bars80080 17.4.2013, 17:08 | ||||
| возникла заморочка на ровном месте есть один сервис, куда я отправляю запрос (SOAP) и получаю ответ в виде объекта.
один параметр этого объекта (token) представляет из себя беспорядочный набор байтов
Добавлено @ 17:08 при попытке сохранить этот объект (скидываю в файл, затем распаковываю обратно для просмотра и дальнейшего использования), содержимое свойства изменяется: при попытке свернуть его с помощью serialize, сохраняется только начало, а на каком-то символе происходит обрыв. в результате unserialize уже не способна развернуть объект обратно при попытке свернуть с помощью json_encode всё содержимое превращается в "token":"\u001f" и всё. я так понимаю, это в силу того, что набор содержит байты служебного назначения, которые эти функции не переваривают каким образом можно было бы свернуть объект с полным сохранением данных? Добавлено @ 17:10 видите, даже сюда запостить не могу, набор байтов функциями этого форума не перевариваются. (кстати, найдена уязвимость форума) какой-то байт закончил передачу, в результате чего вторую половину сообщения пришло добавлять (хорошо, я ожидал этого) |
| Автор: krundetz 17.4.2013, 17:48 | ||
bars80080, самый очевидный выход напрямую работать с бинарными данными, а для их хранения разработать собственный способ, например преобразовать бинарные данные в их строковое представление, что то вида
|
| Автор: skyboy 17.4.2013, 18:42 | ||
исправлено расползшееся сообщение |
| Автор: Чучмек 17.4.2013, 23:38 | ||
Бинарная строка? А если свернуть только token ? |
| Автор: Чучмек 17.4.2013, 23:56 | ||||
Еще добавится тип и длинна. При вызове unserialize учитываются только они. Я не о том. Может виновата структура объекта, а не
|
| Автор: bars80080 18.4.2013, 09:43 |
| сам объект прекрасно сворачивается. у меня две версии этого объекта, сейчас переходим от одной ко второй. основные изменения коснулись методов работы, но в данном объекте изменилось только одно - содержимое свойства token. раньше была человеко-читаемая строка, теперь свалка из байтов, хотя всё прочее осталось без изменений. так что сам объект очень даже себе валидный и способен к пакованию, что serialize, что json_encode. и только значение token теперь не сохраняется |
| Автор: Fortop 18.4.2013, 09:50 |
сохраняй это поле отдельно от объекта. |
| Автор: krundetz 18.4.2013, 10:09 |
да |
| Автор: bars80080 18.4.2013, 12:46 |
| base64_encode очень хорошо проканал. запаковал без вопросов, а затем распаковал в идентичную запись всем спасибо |