3

Cookie を設定していますが、問題があります。現在、Cookie の形式は次のとおりです。

setcookie("company_id", $company_id, 0, '/');

したがって、有効期限0は Cookie が期限切れにならないことを意味するように設定されていますが、有効期限を設定しないようにしようとすると、次のように 3 番目のパラメーターに空の引数を渡します。

setcookie("company_id", $_POST["company_id"], "", '/');

しかし、これは機能しません。空の引数を変更すると、Cookieが取得されず、機能しなくなり0ます。助言がありますか?

4

2 に答える 2

6

有効期限パラメーターは秒単位です。Setcookie 関数

name 引数を除くすべての引数はオプションです。引数をスキップするために、引数を空の文字列 ("") に置き換えることもできます。有効期限の引数は整数であるため、空の文字列でスキップすることはできません。代わりにゼロ (0) を使用してください。

したがって、セッションの終了時に有効期限が切れないようにする場合を除き、0 以外の値を指定する必要があります。

0 は、Cookie がセッションの終了時に期限切れになることを示します。「期限切れにならないようにする」場合は、非常に長い時間を使用します。

setcookie("TestCookie", $value, time()+3600*24*365*10, '/')

たとえば、それは 10 年になります。

Cookie は頻繁に消去される可能性があることに注意してください。したがって、あなたのものは削除される可能性があります。Cookie はブラウザ固有のものでもあるため、これに保存されているデータが毎回必要な場合、ユーザーがブラウザを切り替えると、再度設定しない限り使用できなくなります。

于 2012-06-14T15:48:37.787 に答える
4

You're asking the wrong question. There is no way to set a cookie to not expire; This is not a PHP limitation, it's just not part of the specification for cookies (http://www.faqs.org/rfcs/rfc2965.html).

Your best bet is to use a date far in the future. For example, to set a cookie that expires in twenty years:

setcookie(
  "CookieName",
  "CookieValue",
  time() + (20 * 365 * 24 * 60 * 60)
);
于 2012-06-14T15:46:15.103 に答える