首頁  >  文章  >  後端開發  >  Laravel 5.4 session 生效問題

Laravel 5.4 session 生效問題

PHP中文网
PHP中文网原創
2018-02-18 14:07:091928瀏覽

在測試過程中發現如果方法有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 5.4 session 生效問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn