짐작할 수 있겠지만 ob_start()
을 출력 할 필요없이 PHP에서 쿠키를 설정할 수있는 방법이 있습니까?ob_start없이 출력 후 쿠키 설정
내 문제는 다른 사람들과 마찬가지로 쿠키를 설정해야하는 클래스를 개발하고 있다는 것입니다. 이제는 "출력을 만들기 전에 클래스의 새로운 인스턴스를 만들어야합니다"라는 말을 사용하는 사람에게 말할 수 없습니다. 그래서 나는 어떻게 든 그것을 뺄 수 있습니까?
짐작할 수 있겠지만 ob_start()
을 출력 할 필요없이 PHP에서 쿠키를 설정할 수있는 방법이 있습니까?ob_start없이 출력 후 쿠키 설정
내 문제는 다른 사람들과 마찬가지로 쿠키를 설정해야하는 클래스를 개발하고 있다는 것입니다. 이제는 "출력을 만들기 전에 클래스의 새로운 인스턴스를 만들어야합니다"라는 말을 사용하는 사람에게 말할 수 없습니다. 그래서 나는 어떻게 든 그것을 뺄 수 있습니까?
전문가가 아닌 해결 방법을 적용 나열된 참조하십시오. 특히 :
<META HTTP-EQUIV="Set-Cookie"
CONTENT="cookievalue=xy;expires=Friday, 14-Dec-12 12:12:12 GMT; path=/">
또는 javascript를 사용하고 document.cookie
을 설정합니다.
수 없습니다. 쿠키는 헤더의 일부로 전송되므로 이미 본문을 보낸 경우 너무 늦었습니다. 출력 버퍼링이 해결책입니다.
아마도 세션 변수를 사용할 수 있습니다.
쿠키를 설정할 수없는 경우에만 그렇게 할 것입니다. 감사합니다.이 역시 좋은 제안입니다. –
이것은 내 workround이며 나를 위해 잘 작동합니다.
// Force set cookie now
$_COOKIE['ref_url'] = $_SERVER['HTTP_REFERER'];
// Set cookie after refresh site
setcookie('ref_url', $_SERVER['HTTP_REFERER'], Affiliate::$cookieTime);
// Diplay $_COOKIE
var_dump($_COOKIE['ref_url']);
$ _SERVER [ 'HTTP_REFERER']가 비어있는 경우가 있으므로 사용하기 전에 먼저 테스트하십시오. $ url_referrer = empty ($ _ SERVER [ 'HTTP_REFERER'])? '': $ _ SERVER [ 'HTTP_REFERER']; – fedmich
왜 출력하기 전에 쿠키를 설정하는 것이 왜 안 좋습니까? – Josh
코드를 작성하는 것이 그렇게 어렵지는 않습니다. 다른 개발자가 자신의 클래스를 사용하기를 원하기 때문에 그렇게하는 것은 절름발입니다. –
클래스가 Set-Cookie와 같은 HTTP 헤더를 전송할 책임이 있음을 문서화 한 경우 출력을 보내기 전에 사용해야한다고 말하는 데는 아무런 문제가 없습니다. 예를 들어,'setcookie' 문서가 정확히 말하는 것입니다. –