ホームページ  >  記事  >  バックエンド開発  >  Laravel 5.4のセッション有効性の問題

Laravel 5.4のセッション有効性の問題

PHP中文网
PHP中文网オリジナル
2018-02-18 14:07:091928ブラウズ

テストの過程で、PHPの出力キャッシュに出力するecho等の関数があるメソッドの場合、httpリクエストヘッダーにsessionIDが配置されず、次のリクエストで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() 関数は true を返します

これは、セッションで発生する問題を説明していますメソッドに印刷機能がある場合は決して有効になりません。

以上がLaravel 5.4のセッション有効性の問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。