今天在新的測試環境測試一下舊專案,發現到一打開就給我報錯,出現了下面這個錯誤訊息

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]);

這樣就不會報錯了!如果要兼容多個版本的話,也可以參考下面的代碼

01.PNG

使用 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