2015-02-17 2 views
1

Ой, ребята, я проводить второй день на этом материале, пытаясь поймать и ошибки по одному на локальный и хостинг и до сих пор не может признать, что проблема заключается :(PHP установить куки массива JSON кириллицы

Например у меня есть массив так:

$wishlistArray = array 
    (
    array(
    'id' => '1021397549', 
    'prod-name' => 'Продукт 1', 
    'cost' => '4', 
    'sku' => '14:200001438#8;5:361385', 
    'pcs' => '1', 
    'ship-num' => '2', 
    'ship-name' => 'DHL', 
    'ship-cost' => '2400', 
    'img' => 'http://i01.i.site.com/wsphoto/v15/1021397549_1/2014-новая-прекрасная-Продукт1.jpg', 
    'aviable' => '999', 
    'sku-html' => '<img class="color" height="26" width="26" src="http://i01.i.site.com/wsphoto/sku/v12/1021397549/1021397549_200001438/Хаки-2015-новый-шик-горячая-распродажа-бесплатная-доставка-сексуальные-женщины-красочные-птицы-шифон-рубашка-форме-крыла-летучей.jpg_50x50.jpg" title="8" bigpic="http://i01.i.site.com/wsphoto/sku/v12/1021397549/1021397549_200001438/Хаки-2015-новый-шик-горячая-распродажа-бесплатная-доставка-сексуальные-женщины-красочные-птицы-шифон-рубашка-форме-крыла-летучей.jpg">' 
    ), 
    array(
    'id' => '2028047220', 
    'prod-name' => 'Продукт 2', 
    'cost' => '9' , 
    'sku' => '', 
    'pcs' => '2', 
    'ship-num' => '2', 
    'ship-name' => 'EMS', 
    'ship-cost' => '1428', 
    'img' => 'http://i00.i.site.com/wsphoto/v1/1735472674_1/Продукт2-супер-изображение.jpg', 
    'aviable' => '999', 
    'sku-html' => '' 
    ) 
    ); 

Я пытаюсь сохранить как куки, потому что я хотел бы повторить его с Javascript немного следующего:

$someJSON = json_encode($wishlistArray); 
setcookie("wishlist", $someJSON); 
$decode_array = json_decode($_COOKIE["wishlist"]); 
echo 'FROM COOKIE: <pre>', print_r($decode_array), '</pre>'; 

Но здесь он останавливается с различными ошибками от к Примечание: Undefined переменной: и Примечание: Undefined индекс:, когда я пытаюсь настроить его с некоторыми raw_json_encode, addslashes, ob_start(); и т. Д., Поэтому я думаю, что основная проблема заключается в правильном преобразовании массива перед настройкой Cookie.

Я молю всех богов, ребята, моя голова сходит с ума, на самом деле не понимаю, как это сделать :(

UPDATE:

Это ясно строка после преобразования JSON, что я пытаюсь установить, как печенье и не получает печенья после :(

[{"id":"1021397549","prod-name":"2015 \u043d\u043e\u0432\u044b\u0439 \u0448\u0438\u043a! \u0433\u043e\u0440\u044f\u0447\u0430\u044f \u0440\u0430\u0441\u043f\u0440\u043e\u0434\u0430\u0436\u0430 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0441\u0435\u043a\u0441\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0436\u0435\u043d\u0449\u0438\u043d\u044b \u043a\u0440\u0430\u0441\u043e\u0447\u043d\u044b\u0435 \u043f\u0442\u0438\u0446\u044b \u0448\u0438\u0444\u043e\u043d \u0440\u0443\u0431\u0430\u0448\u043a\u0430 \u0444\u043e\u0440\u043c\u0435 \u043a\u0440\u044b\u043b\u0430 \u043b\u0435\u0442\u0443\u0447\u0435\u0439 \u043c\u044b\u0448\u0438 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0431\u043b\u0443\u0437\u043a\u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u043a\u0440\u043e\u044f \u0442\u043e\u043f\u044b","cost":147,"sku":"14:200001438#8;5:361385","pcs":"1","ship-num":"2","ship-name":"e-EMS","ship-cost":796,"img":"http:\/\/i01.i.aliimg.com\/wsphoto\/v15\/1021397549_1\/2015-\u043d\u043e\u0432\u044b\u0439-\u0448\u0438\u043a-\u0433\u043e\u0440\u044f\u0447\u0430\u044f-\u0440\u0430\u0441\u043f\u0440\u043e\u0434\u0430\u0436\u0430-\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f-\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430-\u0441\u0435\u043a\u0441\u0443\u0430\u043b\u044c\u043d\u044b\u0435-\u0436\u0435\u043d\u0449\u0438\u043d\u044b-\u043a\u0440\u0430\u0441\u043e\u0447\u043d\u044b\u0435-\u043f\u0442\u0438\u0446\u044b-\u0448\u0438\u0444\u043e\u043d-\u0440\u0443\u0431\u0430\u0448\u043a\u0430-\u0444\u043e\u0440\u043c\u0435-\u043a\u0440\u044b\u043b\u0430-\u043b\u0435\u0442\u0443\u0447\u0435\u0439.jpg","aviable":"990","sku-html":""},{"id":"2028047220","prod-name":"2015 \u043d\u043e\u0432\u044b\u0439 \u0448\u0438\u043a! \u0433\u043e\u0440\u044f\u0447\u0430\u044f \u0440\u0430\u0441\u043f\u0440\u043e\u0434\u0430\u0436\u0430 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0441\u0435\u043a\u0441\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0436\u0435\u043d\u0449\u0438\u043d\u044b \u043a\u0440\u0430\u0441\u043e\u0447\u043d\u044b\u0435 \u043f\u0442\u0438\u0446\u044b \u0448\u0438\u0444\u043e\u043d \u0440\u0443\u0431\u0430\u0448\u043a\u0430 \u0444\u043e\u0440\u043c\u0435 \u043a\u0440\u044b\u043b\u0430 \u043b\u0435\u0442\u0443\u0447\u0435\u0439 \u043c\u044b\u0448\u0438 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0431\u043b\u0443\u0437\u043a\u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u043a\u0440\u043e\u044f \u0442\u043e\u043f\u044b 14003","cost":136,"sku":"","pcs":"2","ship-num":"2","ship-name":"China Post Registered Air Mail","ship-cost":110,"img":"http:\/\/i00.i.aliimg.com\/wsphoto\/v0\/2028047220_1\/2015-\u043d\u043e\u0432\u044b\u0439-\u0448\u0438\u043a-\u0433\u043e\u0440\u044f\u0447\u0430\u044f-\u0440\u0430\u0441\u043f\u0440\u043e\u0434\u0430\u0436\u0430-\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f-\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0430-\u0441\u0435\u043a\u0441\u0443\u0430\u043b\u044c\u043d\u044b\u0435-\u0436\u0435\u043d\u0449\u0438\u043d\u044b-\u043a\u0440\u0430\u0441\u043e\u0447\u043d\u044b\u0435-\u043f\u0442\u0438\u0446\u044b-\u0448\u0438\u0444\u043e\u043d-\u0440\u0443\u0431\u0430\u0448\u043a\u0430-\u0444\u043e\u0440\u043c\u0435-\u043a\u0440\u044b\u043b\u0430-\u043b\u0435\u0442\u0443\u0447\u0435\u0439.jpg","aviable":"998","sku-html":""},{"id":"802048809","prod-name":"\u0414\u0438\u0437\u0430\u0439\u043d\u0435\u0440 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0437 \u0434\u0432\u0443\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u043a\u0440\u0443\u0436\u0435\u0432\u0430 \u0448\u0438\u0444\u043e\u043d \u0431\u043b\u0443\u0437\u043a\u0430 \u0440\u0443\u0431\u0430\u0448\u043a\u0430 \u0441 \u043a\u0430\u0440\u0434\u0438\u0433\u0430\u043d \u0434\u043b\u044f \u0436\u0435\u043d\u0449\u0438\u043d 2015 \u0432\u0435\u0441\u043d\u0430 \u043c\u043e\u0434\u0430 \u0434\u0430\u043c\u044b \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u043a\u0440\u043e\u044f \u0442\u043e\u043f\u044b","cost":585,"sku":"","pcs":"1","ship-num":"3","ship-name":"Fedex IE","ship-cost":3865,"img":"http:\/\/i01.i.aliimg.com\/wsphoto\/v0\/802048809\/\u0414\u0438\u0437\u0430\u0439\u043d\u0435\u0440-\u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e-\u0438\u0437-\u0434\u0432\u0443\u0445-\u0447\u0430\u0441\u0442\u0435\u0439-\u043a\u0440\u0443\u0436\u0435\u0432\u0430-\u0448\u0438\u0444\u043e\u043d-\u0431\u043b\u0443\u0437\u043a\u0430-\u0440\u0443\u0431\u0430\u0448\u043a\u0430-\u0441-\u043a\u0430\u0440\u0434\u0438\u0433\u0430\u043d-\u0434\u043b\u044f-\u0436\u0435\u043d\u0449\u0438\u043d-2015-\u0432\u0435\u0441\u043d\u0430-\u043c\u043e\u0434\u0430.jpg","aviable":"919","sku-html":""}] 
+0

Что такое вывод $ decode_array? –

+0

Фактически '

1
' и нет никакого списка файлов cookie ** на самом деле тоже, но когда я устанавливаю его с чем-то простым, например 'setcookie (« wishlist »,« cookie_test »);' появляется :) –

+0

Какая строка, содержащий ваш код. Примечание. Неопределенная переменная emplies –

ответ

0

Прежде всего json_decode требует TRUE -alike второго параметра, чтобы вернуть ассоциативный массив в качестве результата. Затем убедитесь, что вы используете правильную кодировку, потому что json_decode вернет здесь кодированные строки UTF-8.

0

PHP часть решаемые с base64_encode

ob_start(); 

    header("Content-Type:text/html;charset=utf-8"); 

    function raw_json_encode($input) { 

      return preg_replace_callback(
      '/\\\\u([0-9a-zA-Z]{4})/', 
      function ($matches) { 
       return mb_convert_encoding(pack('H*',$matches[1]),'UTF-8','UTF-16'); 
      }, 
      json_encode($input) 
      ); 

     } 

    $someJSON = base64_encode(raw_json_encode($wishlistArray)); 
    setcookie("wishlist", $someJSON); 
    $decode_array = json_decode(base64_decode($_COOKIE["wishlist"])); 

    echo 'FROM COOKIE: <pre>', print_r($decode_array), '</pre>'; 

Javascript часть не решаемые Так что я просто нужно понял, как декодировать его обратно в Javascritpt, потому что

 <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/core-min.js"></script> 
     <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/enc-utf16-min.js"></script> 
     <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/enc-base64-min.js"></script> 
     <script src="//code.jquery.com/jquery-1.10.2.js"></script> 
     <script src="src/jquery.cookie.js"></script> 

<div id="myCart"></div> 

    <script> 
     var wishlistArray = JSON.parse(CryptoJS.enc.Base64.parse($.cookie('wishlist'))); 


      var wishlistArrayDom = ""; 
      jQuery.each(wishlistArray, function (i, wishlistID) { 
       wishlistArrayDom += '<br><div><b>' 
       +    
       wishlistID["id"] + ' ' + 
       wishlistID["prod-name"] + ' ' + 
       wishlistID["cost"] + ' ' + 
       wishlistID["sku"] + ' ' + 
       wishlistID["pcs"] + ' ' + 
       wishlistID["ship-num"] + ' ' + 
       wishlistID["ship-name"] + ' ' + 
       wishlistID["ship-cost"] + ' ' + 
       wishlistID["img"] + ' ' + 
       wishlistID["aviable"] 
       + 
       '<br>'; 

      }); 

      $('#myCart').empty(); 
      $('#myCart').html(wishlistArrayDom); 

     } 
    </script> 

не работает на всех и я каким-то образом получаю Uncaught SyntaxError: Неожиданный токен b на 1 точка останова.

Смежные вопросы