PHP 設置Cookie值注意項

  Cookie 中的value值只能添加設置爲String類型的字符串數據,但咱們須要添加如數組,json串等其餘類型的數據時,咱們就要先對數據進行轉換,再存入Cookie裏了。json

  Cookie 存儲數組,cookie存儲數組類型的數據有多種方法,實質就是講數組轉換成字符串再存儲。數組

  第一種,將數組各個值用逗號拼接成字符串,隨後將字符串存入cookie。讀取時能夠使用split()將字符串以逗號分割從新組成數組。cookie

        $data = array(
            'a'=>'aaa',
            'b'=>'bbb',
            'c'=>'ccc'
        );
        $str = $data['a'].",".$data['b'].",".$data['c'];  //拼接成字符串
set_cookie('name',$str,3600); $cstr = $_COOKIE['name']; $cdata = split('[/,]',$cstr);

  第二種,和上一種方法相似,使用 implode() 講數組合併成一個字符串存入cookie,以後獲取cookie值再使用 explode() 將字符串分割後生成數組。注意,使用explode時要保證字符串的首位不能是空(空格),否則會出現warning錯誤。編碼

        $data = array(
            'a'=>'aaa',
            'b'=>'bbb',
            'c'=>'ccc'
        );
        $str = implode(',',$data);

        set_cookie('name',$str,3600);
        $cstr = $_COOKIE['name'];
        $cdata = explode(',',$cstr);

  第三種,對數組進行編碼,以後獲取時再進行解碼。好比 serialize() 序列化和 unserialize() 反序列化操做。spa

        $data = array(
            'a'=>'aaa',
            'b'=>'bbb',
            'c'=>'ccc'
        );
        $str = serialize($data);

        set_cookie('name',$str,time()+3600);
        $cstr = $_COOKIE['name'];
        $cdata = unserialize($cstr);

  第四種,Cookie 存儲 json 字符串,使用 json_encode() 將數組轉換成json字符串,再將json字符串存儲到cookie中,最後獲取時使用 json_decode() 轉換回來便可。code

        $data = array(
            'a'=>'aaa',
            'b'=>'bbb',
            'c'=>'ccc'
        );
        set_cookie('name',json_encode($data),time()+3600);

        $cstr = $_COOKIE['name'];
        $cdata = json_decode($cstr);
相關文章
相關標籤/搜索