0

私が取り組んでいるカスタム CMS で 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 を送信するときに自動的に URL エンコードされ、受信すると自動的にデコードされ、Cookie 名と同じ名前の変数に割り当てられることに注意してください。これを望まない場合、PHP 5 を使用している場合は代わりに setrawcookie() を使用できます。

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

setcookie はブール値を返すので、チェックを行う必要はありません。ただ行う:

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