Php Cookie值不可用,为什么?

Php Cookie值不可用,为什么?,php,cookies,Php,Cookies,我已经在我的开发计算机上进行了测试,但是现在我已经将所有内容上传到了生产服务器,我无法读取cookie的值 我认为问题在于序列化和非序列化 if (isset($_COOKIE['watched_ads'])){ $expir = time()+1728000; //20 days $ad_arr = unserialize($_COOKIE['watched_ads']); // HERE IS THE PROBLEM $arr_elem = count($ad_arr

我已经在我的开发计算机上进行了测试,但是现在我已经将所有内容上传到了生产服务器,我无法读取cookie的值

我认为问题在于序列化和非序列化

if (isset($_COOKIE['watched_ads'])){
    $expir = time()+1728000; //20 days
    $ad_arr = unserialize($_COOKIE['watched_ads']); // HERE IS THE PROBLEM
    $arr_elem = count($ad_arr);
    if (in_array($ad_id, $ad_arr) == FALSE){
        if ($arr_elem>10){
        array_shift($ad_arr);
        }
        $ad_arr[]=$ad_id;
        setcookie('watched_ads', serialize($ad_arr), $expir, '/');
    }
}
当我回显时:count($ad_arr)我收到预期的nr,在本例中,1,因此那里有一个值。但当我回显值时:回显$ad_arr[0]空白。没有文本

有人有线索吗


如果您需要有关某些内容的更多信息,请告诉我…

您应该了解,对于大多数非数组值,包括空字符串,返回
1

> php
<?php
echo count("");
^Z
1
>php

原来这里需要的是条纹斜杠


首先做了一个stripslashes(),它在不序列化cookie的情况下工作。

我猜,您的$ad_arr不是数组。您可以使用“is_array()”函数或通过调用:

var_dump($ad_arr);
它应该在输出中有“array”,而不是“string”(正如刚才提到的)

另一个小提示:

如果要存储关联数组,可以使用编码的JSON字符串,该字符串可以使用JSON_encode()操作保存:

setcookie('watched_ads', json_encode($ad_arr), $expir, '/');
加载数据时,可以使用相反的函数json_decode():

添加true作为第二个参数,将得到关联数组而不是对象。使用JSON格式也是在数据库中保存复杂数据的好主意

最后一个提示:“!in_array()”与“in_array()==FALSE”的效果一样好。

否,请在php中使用var_dump()命令来输出$\u COOKIE的内容。
$ad_arr = json_decode($_COOKIE['watched_ads'], true);