php
1if ($login_user) { 2 session_start(); 3 $_SESSION['user']=$login_user; 4}else{ 5 $_SESSION['user']=false; 6} 7 8if($_SESSION['user']){ 9 echo $_SESSION['user']); 10}
上記のように$login_user
がtrue
の場合に$_SESSION['user']
にuser名が格納して処理させる基本的なコードを想定しております。
ここでマニュアルを読んでも具体的な使用があまり、わからなかったため、こちらの参考記事を拝見すると$_SESSIONはブラウザを閉じるまで保持されると記載がありました。(具体的には載っていないですが、当然unset等で変数を破棄した場合も同様かと存じます)
さて、ここで試しに上記のコードでecho $_SESSION['user']);
で適切に出力されていることを確認できたのちに、ブラウザを閉じて再度同じページを開いた際に、また同じ出力が発生し、破棄されていないことが判明しました。
[環境等について]
0. php.ini
におけるsession.cookie_lifetimeは0に設定されています。
- PHPは7.3.8を使用
- OSはmacOS Catalina 10.15.7(上記のブラウザの閉じるは×ボタンだけではなく、ツールバー状のGoogleChromeの終了まで実行しております)
- ブラウザはGoogle Chrome 91.0.4472.106(Official Build) (x86_64)
を利用しております。参考記事に誤りがあるのでしょうか?
追記
iniに関連する設定です。コメントアウト部分は文字数オーバーのため削除しました。
php
1//php.ini 2[Session] 3session.save_handler = files 4session.save_path = /Applications/MAMP/tmp/php 5session.use_strict_mode = 0 6session.use_cookies = 1 7session.use_only_cookies = 1 8session.name = PHPSESSID 9session.auto_start = 0 10session.cookie_lifetime = 0 11session.cookie_path = / 12session.cookie_domain = 13session.cookie_httponly =r 14session.serialize_handler = php 15session.gc_probability = 1 16session.gc_divisor = 100 17session.gc_maxlifetime = 1440 18session.referer_check = 19session.cache_limiter = nocache 20session.cache_expire = 180 21session.use_trans_sid = 0 22session.sid_length = 26 23session.trans_sid_tags = "a=href,area=href,frame=src,form=" 24session.sid_bits_per_character = 5
回答1件
あなたの回答
tips
プレビュー