私はdata-id属性を持つリンクをクリックするたびに呼び出される関数を書いています。配列にIDを追加してクッキーに設定したいのですが、そのクッキーを読み取ることはできません。ここでは、私がこれまで持っているものです。
function add_this_id($the_id) {
$name = "mycookie";
/* line below is the issue: */
$value = isset($_COOKIE[$name]) ? json_decode($_COOKIE[$name], true) : array();
$value[] = $the_id;
$expire = time() + (60*60*24); //expire in 24 hours
setcookie($name, json_encode($value), $expire, '/');
$_COOKIE[$name] = json_encode($value);
print_r($value);
print_r(json_decode($_COOKIE[$name], true));
die();
}
それが動作し、クッキーが作成され、私はクッキーの値としてIDを検査して見ることができます初めて。しかし、クッキーがすでに存在しているために2回目の試行では、関数json_decode($_COOKIE[$name], true)
の2行目が配列の代わりにnullを返すので、新しいIDを追加することはできません。だから私はそうのような配列でそれをラップ試してみました:
$value = isset($_COOKIE[$name]) ? array(json_decode($_COOKIE[$name], true)) : array();
しかし、私は現在のIDを設定することができるように空の配列を返すされず、今私は私が空から始まる続けるループに陥っていたすべてIDを付加することはできません。なぜそれが設定された後に$_COOKIE[$name]
を読むことができないのですか?何か案は?
@RyanVincentヌル。私もIDを投げ捨てて、IDを正しく設定していることを示しています。なぜブラウザでクッキーを調べると、そこに単一のID文字列が表示されるのか理解できないのですが、それを読み取ろうとするとnullに戻ります。 – user3376065