Laravel 5.4.36 session 生效问题
程序员文章站
2022-07-05 12:04:24
在测试过程中发现 如果方法有echo 等函数输出到PHP的输出缓存中 存在 sessionID 不会放到http的请求头中 下次请求也就拿不到sessionid问题 问题的原因 代码位置:public/index.php 该方法代用方法 代码:vendor/symfony/http-foundati ......
在测试过程中发现 如果方法有echo 等函数输出到PHP的输出缓存中 存在 sessionID 不会放到http的请求头中 下次请求也就拿不到sessionid问题
问题的原因
代码位置:public/index.php
$response->send();
该方法代用方法 代码:vendor/symfony/http-foundation/Response.php
/** * Sends HTTP headers. * * @return $this */ public function sendHeaders() { // headers have already been sent by the developer if (headers_sent()) { return $this; } // headers foreach ($this->headers->allPreserveCaseWithoutCookies() as $name => $values) { foreach ($values as $value) { header($name.': '.$value, false, $this->statusCode); } } // status header(sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText), true, $this->statusCode); // cookies foreach ($this->headers->getCookies() as $cookie) { if ($cookie->isRaw()) { setrawcookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly()); } else { setcookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly()); } } return $this; }
以前的原因出现在 headers_sent() 中
有兴趣的同学可以测试一下 如果输出缓存存在数据 (在方法使用echo 之类的函数有打印行为) headers_sent() 函数则返回ture
这样就解释了 在方法中存在打印的函数时候 你的session始终没有生效问题
推荐阅读
-
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
-
Laravel 5.4.36中session没有保存成功问题的解决
-
Laravel 5.4.36 session 没有保存成功问题
-
Laravel 5.4.36 session 生效问题
-
laravel5 session共享问题
-
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
-
求大神给指点下这些代码有什么问题啊,为什么session变量不生效啊
-
laravel Session问题
-
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
-
laravel5 session共享问题