先用serialize序列化数组,再存入COOKIE ,读出来时用unserialize得到原来的数组

解决方案 »

  1.   

    <?
    $arr = array(1,2,3);
    setcookie( "a[0]", $arr[0] );
    setcookie( "a[1]", $arr[1] );
    setcookie( "a[2]", $arr[2] );
    ?>
    这是php设定多键值cookie的方法。
      

  2.   

    <?
    //存入
    $arr = array(1,2,3);
    $arr_str = serialize($arr); 
    setcookie( "a",$arr_str );//取出
    $arr_str = $_COOKIE['a'];
    $arr     = unserialize($arr_str); ?>
    这样的话,无论你的$arr是多少维,怎么变代码都是这样,这不是更好吗?
      

  3.   

    <?
    //存入
    $arr = array(1,2,3);
    $arr_str = serialize($arr); 
    setcookie( "a",$arr_str );//取出
    $arr_str = $_COOKIE['a'];
    $arr     = unserialize($arr_str); ?>
    这样的话,无论你的$arr是多少维,怎么变代码都是这样,这不是更好吗?
        
    -------------------------------------------------------------我也认为这种方法比较好。不限维数
      

  4.   

    手册上有写,不建议在cookie里写数组。因为cookie可以伪造。而在unserialize时可能会被伪造的数据攻击。
      

  5.   

    手册上有写,不建议在cookie里写数组。因为cookie可以伪造。而在unserialize时可能会被伪造的数据攻击。----------------------------------------------
    那怎么在cookie里存维数比较多的数组?
      

  6.   

    unserialize的问题应该补过了吧……都5了。估计用也没问题吧……
    我一般都是简单的数据记录才用cookie,用间隔符隔开,没试过复杂的数组记在cookie的。
      

  7.   

    主要是单个cookie有4k长度限制。而apache文件头限制一般小于8k。太复杂的数据还是得数据库解决,无奈啊。
      

  8.   

    http://www.bluedon.com/bluedo621/search/newsdisplay2.asp?id=4146&sort=2
    php4.10  和php5.03后的版本不存在这个安全问题
      

  9.   

    <?php
    session_start();
    session_register(data); 
    $data=array(1,2,3,4,array(1,2,3,4)); $test_date =  $_SESSION['data'];
    print_r($test_date);
    ?> 
    刚发现的一个办法,呵呵,可以是先注册后赋值。
      

  10.   

    直接这样就可以了<?php
    session_start();
    $_SESSION['data']=array(1,2,3,4,array(1,2,3,4)); print_r($_SESSION['data']);
    ?> 跟踪会话Session是最佳选择
      

  11.   

    cookie就是一串字符串,不认识数组这种东西。可以google一下cookie的标准定义。
    但是PHP可以把同名且后面以[]结尾的cookie解析为数组。