通过翻阅一下手册后我才创造是由于在 PHP>=7.3.0 版本后,setcookie 开始支持设置 SameSite ,语法有了修正造成的。OK,问题找到了!
办理吧!
直接改成下面新的写法,不仅能够精确定义 cookies ,浏览器也不会再报 SameSite 黄字缺点了。
/ PHP >= 7.3.0 Cookie @Author Jackie @Author url https://www.themeke.com /setcookie($name, $value, [ 39;expires' => $expire, 'path' => $path, 'domain' => $domain, 'secure' => $secure, 'httponly' => $httponly, 'samesite' => $samesite]);
末了为了让它能够适应PHP各种版本,我们可以做一个版本判断并利用函数给封装起来,这样无论是什么版本都可以直接方便的利用了。
PHP 全版本适用写法
/ Support samesite cookie in both php 7.2 and php >= 7.3 By Jackie https://www.themeke.com/ @param string $name @param string $value @param int $expire @param string $path @param string $domain @param bool $secure @param bool $httponly @param string $samesite @return void /function setTkCookie($name,$value,$expire,$path,$domain,$secure,$httponly,$samesite): void{ if (PHP_VERSION_ID < 70300) { setcookie($name, $value, $expire, $path . '; samesite=' . $samesite, $domain, $secure, $httponly); return; } setcookie($name, $value, [ 'expires' => $expire, 'path' => $path, 'domain' => $domain, 'samesite' => $samesite, 'secure' => $secure, 'httponly' => $httponly, ]); }