[php]cookieの説明 +ページ遷移で消えてしまう際の対応
経緯
setcookieで保存したクッキーがページ遷移した際に消えてしまう現象が起きました。
その対処法をここに記載致します。
結論
このような記述を書いていました。
setcookie(cookie名, cookie保存内容);
上の記述を以下のように記述する。
setcookie(cookie名, cookie保存内容, (time()+1800), "/");
クッキーとは
HTTPにおける情報を管理する通信プロトコルやウェブブラウザに一時的に保存できる情報のことを指します。
HTTPにおけるウェブサーバとウェブブラウザ間で状態を管理する通信プロトコル、またそこで用いられるウェブブラウザに保存された情報のことを指します。
ユーザ識別やセッション管理を実現する目的などに利用されます。
Cookieを残しておくと第三者に不正使用される可能性があるため、個人情報は載せてはいけないです。
setcookieの説明
クッキーを保存できます。
例)
setcookie('cookie_name', 'クッキーです');
上の例のように引数2個だけでも、クッキーへ値を渡せます。
ブラウザでクッキーの確認
ディベロッパーツールを開いて、画像中①のようにApplicationタブを押下し、
Storage配下のCookiesを見ると保存したクッキー情報が入っています。
例で入力した「cookie_name」が入ってることが確認できます。
クッキーの取り出し方
$_COOKIE['クッキー名']
で取り出せます。
echo $_COOKIE['cookie_name'];
ページ遷移でcookieが消える理由
有効範囲がpathで指定されてるからです。
先ほどブラウザでクッキーを確認したところにpathが書いてあります。
pathは/products/detail
になっています。(※例として使っています。)
よって、productsディレクトリ配下のファイルであればクッキーへアクセスできます。
しかし、productsディレクトリ配下ではない別のディレクトリからクッキーへはアクセスできないようになっています。
これがsetcookieの仕様でマニュアルに記載されています。
↓マニュアルです。
https://www.php.net/manual/ja/function.setcookie.php
対処方法
先ほどの例ではsetcookieを使用する際に、
setcookie('cookie_name', 'クッキーです')
このように第2引数までしか付けず、有効期限やpathを指定していませんでした。
このpathを指定を変えることで別のディレクトリでも使用できるようになります。
`setcookie('cookie_name', 'クッキーです', (time()+1800), '/')`
有効期限を30分、pathを'/'
にしました。
'/'
はルートディレクトリを表しています。どのページからでもアクセスすることができます。
参考
Author And Source
この問題について([php]cookieの説明 +ページ遷移で消えてしまう際の対応), 我々は、より多くの情報をここで見つけました https://qiita.com/kaino5454/items/3b26927e15da4cc012f7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .