проблема с unserialize в php

Я использую функции serialize / unserialize в php 5.2. текст, который нужно сохранить, отправляется через форму. btw, без пробелов до или после. если текст содержит «или», он сериализуется успешно. Проблема в том, что он не отменяет повторение. Что я делаю неправильно?

У Дэвида Уолша есть простое решение:

//to safely serialize $encoded_serialized_string = base64_encode(serialize($your_array)); //to unserialize $array_restored = unserialize(base64_decode($encoded_serialized_string)); 

http://davidwalsh.name/php-serialize-unserialize-issues

это волшебные цитаты, вероятно, в ответ на такое поведение. Таким образом, для несериализации вам, возможно, придется сделать stripslashes ():

 if (get_magic_quotes_gpc()) $data = stripslashes($data); 

хотя почти невозможно иметь magic_quotes в системе 5.2.
Чтобы сказать что-то определенное, вам нужно найти разницу между исходными и возвращенными данными.

Но так или иначе, почему бы вам не использовать сеансы вместо отправки данных в браузер и обратно? Сессии действительно быстрее и безопаснее.

Когда вы сериализуете, вы должны использовать addslashes и когда вы несериализуете, используйте функцию stripslashes .

Пример:

 if (get_magic_quotes_gpc()) { serialize($variable); } else { addslashes(serialize($variable)); } if (get_magic_quotes_gpc()) { stripslashes(unserialize($variable)); } else { unserialize($variable); } 

Добавление косой черты в цитаты решает проблему. Посмотрите мой код: http://codepad.org/7JWa2BT6