今天在新的測試環境測試一下舊專案,發現到一打開就給我報錯,出現了下面這個錯誤訊息
Warning: Cookie paths cannot contain any of the following ',; \t\r\n\013\014' in
這個問題的原因是因為Cookie的path含有 ,; \t\r\n\013\014
這些字元,一查了一下才發現,當初在舊專案為了解決sameSite的問題,使用了下面的寫法
setcookie(session_name(), session_id(), time() + $expire,'/; SameSite=None; Secure');
但這種作法在PHP7.3以下可以用,PHP7.3以上就會報錯了。在PHP7.3要改成下面這種寫法才行
setcookie(session_name(), session_id(), ['samesite' => 'None', 'secure' => true]);
這樣就不會報錯了!如果要兼容多個版本的話,也可以參考下面的代碼
使用 version_compare 來比較PHP的版本
if (version_compare(PHP_VERSION, '7.3.0') >= 0) { setcookie(session_name(), session_id(), ['samesite' => 'None', 'secure' => true]); }else{ setcookie(session_name(), session_id(), time() + $expire,'/; SameSite=None; Secure'); }
文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)
原文連結:
https://blog.aidec.tw/post/Cookie-paths-cannot-contain-any-of-the-following
若有業務合作需求,可寫信至: opweb666@gmail.com
創業、網站經營相關內容未來將發布在 小易創業筆記