Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не могу понять, почему не работает unserialize()
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Не могу понять, почему не работает unserialize()

Страниц (1): [1]
 

1. pro_xaoc - 03 Февраля, 2013 - 11:36:24 - перейти к сообщению
У меня на одной странице код
на другой странице допустим var_dump(unserialize($_COOKIE['testQ']));. Но вардамп выводит false почему то, хотя если вывести без unserialize, то в куках сидит сериализованная строка, причем эту строку скопировав я попробовал ансериализовать сразу, без $_COOKIE, т.е.
PHP:
скопировать код в буфер обмена
  1. var_dump( unserialize("a:20:{i:0;i:6;i:1;i:14;i:2;i:16;i:3;i:18;i:4;i:12;i:5;i:5;i:6;i:10;i:7;i:9;i:8;i:17;i:9;i:7;i:10;i:20;i:11;i:3;i:12;i:19;i:13;i:15;i:14;i:2;i:
  2.  
  3. 15;i:8;i:16;i:1;i:17;i:4;i:18;i:11;i:19;i:13;}"));

в данном случае все работает. Не могу понять почему у меня не работает в первых случаях? У кого какие мысли? Заранее спасибо!
2. OrmaJever - 03 Февраля, 2013 - 12:01:14 - перейти к сообщению
попробуйте вывести просто

и напишите сюда что вывело
3. pro_xaoc - 03 Февраля, 2013 - 12:03:51 - перейти к сообщению
OrmaJever пишет:
попробуйте вывести просто

и напишите сюда что вывело

PHP:
скопировать код в буфер обмена
  1. string(138) "a:9:{i:0;s:2:\"38\";i:1;s:2:\"44\";i:2;s:2:\"46\";i:3;s:1:\"7\";i:4;s:2:\"43\";i:5;s:1:\"3\";i:6;s:2:\"40\";i:7;s:1:\"9\";i:8;s:2:\"47\";}"
4. Мелкий - 03 Февраля, 2013 - 12:42:14 - перейти к сообщению
Судя по слешам, включены магические кавычки: http://php.net/manual/en/securit...es.disabling.php
5. pro_xaoc - 03 Февраля, 2013 - 12:52:34 - перейти к сообщению
OrmaJever,Мелкий, спасибо допер!
просто сделал

и заработало) в общем решено) спасибо!
6. MickG - 02 Августа, 2014 - 20:01:01 - перейти к сообщению
Вот такое решение для меня сработало:
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. //to safely serialize
  4. $safe_string_to_store = base64_encode(serialize($multidimensional_array));
  5.  
  6. //to unserialize...
  7. $array_restored_from_db = unserialize(base64_decode($encoded_serialized_string));
  8.  
  9.  

Подсмотрено тут: http://stackoverflow[dot]com/questio[dot][dot][dot]-arrays-with-php

Т.е. перед тем как передавать куда-либо сбрреализованный массив, можно его преобрьазовать в base64.

 

Powered by ExBB FM 1.0 RC1