0

我正在编写一个类来控制如何为我正在处理的自定义 CMS 处理 cookie,我很好奇创建 cookie 后更新 cookie 的最佳方法。下面我粘贴了我班级中的一个函数,我正在使用它来更新 cookie,但它似乎不能正常工作。我遇到的问题是即使此函数返回“true”,cookie 似乎也没有改变。

    function updateCookie($data){
            $cookieArray = $this->getCookie();
            array_push($cookieArray,$data);
            //print_r($cookieArray);
            $json_string = json_encode($cookieArray,true);
            if(setcookie(_COOKIENAME, $this->encodeString($json_string,"S33D"))){
                return true;
            }
            else return false;
        }

建议或更正会有所帮助。

谢谢

4

1 回答 1

0

文档中的一些提示可能会有所帮助:

如果在调用此函数之前存在输出,则 setcookie() 将失败并返回 FALSE。如果 setcookie() 成功运行,它将返回 TRUE。这并不表示用户是否接受了 cookie。

...

请注意,当您发送 cookie 时,cookie 的值部分会自动进行 urlencoded,当接收到时,它会自动解码并分配给与 cookie 名称同名的变量。如果您不想要这个,如果您使用的是 PHP 5,则可以使用 setrawcookie() 代替。

http://php.net/manual/en/function.setcookie.php

还有一些 knitpicking: setcookie 返回一个布尔值,因此无需进行检查。做就是了:

return setcookie( ... );
于 2013-04-10T19:42:13.050 回答