1

クロムでのみ発生しているように見える奇妙な問題があります。基本的に、ID を記憶するように Cookie を設定しているので、ユーザーがサイトにアクセスしたときに正しい情報を提示できます。

私のコントローラーアクションでは:

$currentcookie = $this->Cookie->read('mixes');
if ($currentcookie == '') {
    //write a new cookie with a new id etc
} else {
    //show them info relating to the id in the cookie
}

したがって、誰かが初めてアクセスした場合、if ($currentcookie == '') は true と評価され、新しい Cookie が作成されます。既に Cookie がある場合は、「else」が実行されます。

ビューに id を出力するので、それが新しく作成されたものであるかどうかがわかります。これは、最初の訪問では必要ですが、その後の訪問では同じままにする必要があります。

これは FF Opera と safari では機能しますが、奇妙なことに chrome や IE では機能しません。私はブラウザなどを閉じていません。私は何が欠けていますか?

NEW --- Cookie の読み取りと書き込みの方法は次のとおりです。

$currentcookie = $this->Cookie->read('mixes'); 

$this->Cookie->write('mixes', array('idofthemix' => $newTempMixId)); 

私のappControllerでは、前のフィルターに次のように含まれています。

    $this->Cookie->name = 'tempmix';
    $this->Cookie->time = '30 days';  // or '1 hour'
    $this->Cookie->domain = 'localhost';
    $this->Cookie->key = 'li8&*^iih^456%$^%$fsgatfjmi@#@##@@:LLLkjljkjlj87^*&^*6768!£"&^*()%$&';
    $this->Cookie->httpOnly = true;

そのため、ほとんどのブラウザでは Q2FrZQ%3D%3D.b8LRe4GareCnq54%3D のような値を持つ tempmix[mixes] として表示されます。ChromeやIEにはありません

4

1 に答える 1

1

ブラウザの設定を確認してください。ブラウザが Cookie を許可しないように設定されている場合があります。

また、各ブラウザーの Cookie リストに手動で移動して、サイトの Cookie が存在するかどうかを確認してください。(ブラウザごとに、Cookie へのアクセス方法が異なります)

ウイルス対策やインターネット セキュリティ スーツなどの一部のセキュリティ ソフトウェアは、ブラウザがリクエストを送信する方法を妨害している可能性があることに注意してください。

編集

編集後、次のことを試してください。

$currentcookie = unserialize($this->Cookie->read('mixes')); 

$this->Cookie->write('mixes', serialize(array('idofthemix' => $newTempMixId))); 
于 2013-03-07T00:27:20.720 に答える