Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: unserialize (локалка + хост)
 
 автор: sl1p   (31.03.2011 в 12:18)   письмо автору
 
 

было засериализовано массив на локалке изаписано в базу, перенёс на хост unserialize отдаёт false..

локалка :: PHP Version 5.2.10
host :: PHP Version 5.2.14

возможно чтото с кодировкой?... Хотя в субд всё видно, всё перенеслось.


багфикс 5.2.14
Fixed SplObjectStorage unserialization problems (CVE-2010-2225). (Stas)

может в этом дело?... хотя врядли(

  Ответить  
 
 автор: cheops   (31.03.2011 в 12:27)   письмо автору
 
   для: sl1p   (31.03.2011 в 12:18)
 

А на локальной машине массив преобразуется в исходную форму нормально?

PS Вообще сериализация вещь достаточно коварная и не очень надежная, лучше её избегать для долговременного хранения данных (особенно, если они являются ключевыми).

  Ответить  
 
 автор: sl1p   (31.03.2011 в 12:31)   письмо автору
 
   для: cheops   (31.03.2011 в 12:27)
 

да я согласен, просто там жестяк былбы по архитектуре базы, нужно было быстро очень реализовать. Переделаю по возможности.

Кстати, действительно проблема в кодировке. Это если помните я говорил про то что встраиваю модуль который под ютф8 в админку под цп1251.

Перед конектом к базе поставил mysql_query("SET NAMES 'utf8'"); и теперь ок, но теперь проблема с текстом(кракозяблы).. Что делать(


+ база движка в который встраиваю на цп1251, мои таблицы под ютф8..

  Ответить  
 
 автор: sl1p   (31.03.2011 в 12:39)   письмо автору
 
   для: sl1p   (31.03.2011 в 12:31)
 

прошу прощения за спам мыслей, я так подумал просто что нужно базу перевести в цп1251.. Как это сделать?.. Вставить дамп в редактор и перекодировать или это через ж?

  Ответить  
 
 автор: cheops   (31.03.2011 в 12:52)   письмо автору
 
   для: sl1p   (31.03.2011 в 12:39)
 

Лучше да, через дамп перекодировать, исправив в нем кодировки таблиц и SET NAMES указав текущую кодировку файла (это если без phpMyAdmin разворачивать).

  Ответить  
 
 автор: sl1p   (31.03.2011 в 13:08)   письмо автору
 
   для: cheops   (31.03.2011 в 12:52)
 

Блин........ Это ж получается при переводе в кодировку, длина строк изменлась?.. или как?

Имеется ввиду что serialize указывает перед данными их длину..

Всё перевёл кракозяблов нет, но снова не пашет unserialize..(

----------------

Если сделать так:
$s = iconv("cp1251", "utf-8", $s);
где $s это переменная в которой засериализированный массив, то всё ок... Почему так?

  Ответить  
 
 автор: cheops   (31.03.2011 в 13:56)   письмо автору
 
   для: sl1p   (31.03.2011 в 13:08)
 

Хм... вообще говоря да, длина меняется, serialize() в кодировках точно разбираться не будет.

  Ответить  
 
 автор: sl1p   (31.03.2011 в 14:46)   письмо автору
 
   для: cheops   (31.03.2011 в 13:56)
 

ох.. короче решил решил проблему через ж полную..

просто анписал скриптец который ходил по базе брал эти засериализированные массивы, перекодивал в ютф8 распаковывал, перекодивал значения в цп1251 опять спаковывал и сохранял...))


Мда.. не думал никогда что это такое мучение.. И теперь чётко стало ясно зачем юзать ютф8 в своих разработках..

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования