Я только что написал самый простой сценарий в мире, но все же я не могу заставить его работать, и это странно странно.
Я хочу использовать jQuery, чтобы поймать некоторые значения входных полей и сериализовать их с помощью serialize()
jQuery serialize()
. Затем я отправляю сериализованную строку на сервер для ее несериализации. Вот результат, который я получаю от сериализации в jQuery, это то, что я отправляю на сервер.
field1=value1&field2=value2&field3=value3
И вот функция,
public function unserialize_input() { $str = $this->input->post("user_values"); $unserialized = unserialize($str); var_dump($unserialized); }
Как я уже сказал, если я пойду «echo $ str»; Я получаю «field1 = value1 & field2 = value2 & field3 = value3», поэтому строка должна быть неэриализована. Тем не менее, я всегда получаю то же сообщение об ошибке и var_dump($unserialized);
всегда возвращает bool (false).
Вот сообщение об ошибке, которое я получаю от CodeIgniter , рамки, которую я использую для PHP.
Severity: Notice Message: unserialize() [<ahref='function.unserialize'>function.unserialize</a>]: Error at offset 0 of 41 bytes bool(false)
Я использую MAMP и запускаю это локально на данный момент. Я прочитал что-то о том, что magic_quotes_gpc
выключен, может быть причиной этого локально, но он включен. Что может быть неправильным?
Вы используете неправильную функцию PHP. parse_str
этого вы должны использовать parse_str
.
parse_str($str, $unserialized);
Сериализация и несериализация PHP, разрушение и построение объектов и массивов PHP / массивов / значений.
Сериализация jQuery сериализует форму в строку POST, которая может быть очень удобна для выполнения Ajax-вызовов. Пост-строка не является допустимой сериализованной строкой в PHP и не может быть восстановлена до смешанного значения PHP и, следовательно, возвращает false.
Это будет немного расплывчато, потому что я не очень хорошо знаю jQuery, но может быть, строки jQuery serialize даже немного отличаются от PHP? Если это так, то это приведет к появлению сообщения об ошибке.