2016-09-08 1 views
0

私はクッキー値を変更する際に大きな問題があります。私は(存在する場合)/変更する(存在する場合)クッキーを設定し、その値を設定するための機能を持っています。PHPのクッキー値が変更されない

私が関数を呼び出すと、セッション値は変更されましたが、Cookieデータの変更は起こりませんでした。

function setToken($time = 0) { 
    global $value; 
    if (!isset($_COOKIE["name"])) { 
    setcookie("name", $value, time() + $time); 
    } else { 
    $_COOKIE["name"] = $value; 
    } 
    $_SESSION["name"] = $value; 
} 

何が間違っている& &私は何をすべきです?マニュアルから

答えて

0

クッキーは、クッキーがために表示されている必要があり ページの次の読み込みまで見えるようになりません。クッキーが正常に に設定されているかどうかをテストするには、クッキー の有効期限が切れる前に、次の読み込みページでクッキーをチェックしてください。失効時間は、失効パラメータを介して設定されます。 クッキーの存在をデバッグする良い方法は、単に print_r($ _ COOKIE);を呼び出すことです。

更新: あなたのコードは私のために動作します。しかし、関数setToken()に正の整数を与えてください。そうしないと、クッキーはすぐに期限切れになり、表示されません!

あなたはクッキーの値を変更したい場合は、あなたのコードを変更:

function setToken($time = 0) { 
    global $value; 
    if (!isset($_COOKIE["name"])) { 
    setcookie("name", $value, time() + $time); // inital set 
    } else { 
    setcookie("name", $value); // change value 
    } 
    $_SESSION["name"] = $value; 
} 
+0

数回の読み込み後に確認していますが、発生していません。その値が最初です。 –

+0

@Mohammad Rahaは私の答え –

+0

に更新を加えました。私はそれを変更し、その問題を解決します。しかしまだクッキーdosen't変更 –

0

世界が実際にブラウザでクッキーを設定していない$_COOKIEに割り当てます。常にsetcookieに電話してください。

また、クッキーを設定する前に、コンテンツがブラウザに送信されていないことを確認してください。 Cookieはブラウザに送信されるヘッダーに設定されるため、コンテンツのフラッシュが開始された後は設定できません。

+0

詳細をご説明ください。 –

関連する問題