>  기사  >  백엔드 개발  >  Laravel 5.4 세션 유효성 문제

Laravel 5.4 세션 유효성 문제

PHP中文网
PHP中文网원래의
2018-02-18 14:07:091927검색

테스트 과정에서 메소드에 에코 및 기타 함수가 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()에 나타남

관심 있는 학생들은 출력 캐시에 데이터가 있는지 테스트할 수 있으며(메소드가 에코와 같은 함수를 사용할 때 인쇄 동작이 있음) headers_sent() 함수가 true를 반환합니다.

이것은 세션이 수행하는 문제를 설명합니다.

메서드에 인쇄 기능이 있으면 적용되지 않습니다.

위 내용은 Laravel 5.4 세션 유효성 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.