0

PHPでCookieを設定する際に問題があります。これは、チェックボックスがオンになっている場合にCookieを設定するために使用しているコードです。

<?php 
    if(isset($_POST['remember'])){
    setcookie("loggedemail",$email,"time()+3600","/");
    setcookie("loggedpassword",$password,"time()+3600","/");
    echo $_COOKIE['loggedemail'];
    echo $_COOKIE['loggedpassword'];
}
?>

ここで、「覚えている」は、Cookieを設定するために使用しているチェックボックスのIDです。ここでの問題は

  • [要素の検査]をクリックすると、Chromeの[リソース]タブにCookieが表示されません。
  • エコーが見えません。
  • クッキーが設定されていません。

また、ユーザーがセッションからログアウトしたときに、セッションCookieを削除できません。 session_destroy();Chromeはまだアクティブに設定されているCookieを表示しているため、トリックを実行していないようです。

これらの問題を解決するにはどうすればよいですか?

4

4 に答える 4

1

の値は$_COOKIE、ブラウザから受信したCookieを読み取ることで設定されます。

ブラウザからCookieを受信するには、次の条件を満たしている必要があります。PHPで設定->ブラウザが読み込まれる->ユーザーは次のページに移動する(またはフォームを送信する)必要があります。

したがって、基本的に使用する場合は、次の更新までまだsetcookie読むことができません。$_COOKIEそのため、echosは何も表示していませんでした。彼らは示していましたNULL-この使用を確認するためvar_dumpに、あなたは出力を見るでしょう。

于 2012-10-07T09:12:04.323 に答える
1

あなたがこのようにそれをするならば:

setCookie("cookieName", "value", time() + 3600);

動作する必要があります(ブラウザの設定を変更しなかった場合)。ただし、この変数は、ページが次に読み込まれるまで使用できません。ただし、Chrome開発ツールで表示できるはずです。そうでない場合は、Cookieを設定する前に、何も出力していないことを100%確認してください。

2番目の問題に関してsession_destroy()は、セッションを破棄しますが、クライアントにすでに送信されているCookieを無効にすることはありません。有効期限を設定して、手動で無効にする必要があります。

于 2012-10-07T09:11:01.647 に答える
0

あなたは時間を文字列として過ごしています。ここに問題があるので、phpコードを以下のように変更してください

setcookie("loggedemail",$email,time()+3600,"/");
setcookie("loggedpassword",$password,time()+3600,"/");

Cookie はセッションの一部ではないため、session_destroy() は使用できません。

クッキーを削除したい場合は、以下のように時間を過去の時間として設定する必要があります

setcookie("loggedemail", "", time()-3600);
于 2012-10-07T08:51:39.113 に答える
0

session_destroy()セッション ID を含む Cookie の設定を解除せず、セッション データを破棄するだけです。

チェックボックスには「remember」の id 属性があるとおっしゃいましたが、name 属性はありますか? そうでない場合は、すべてが機能していないため、ID は HTML 定義ごとにフォーム アクションにポストされません。

于 2012-10-07T08:53:00.363 に答える