결과적으로 setcookie에서 설정한 쿠키가 적용되지 않아 브라우저에 표시되지 않는 문제가 발생했습니다. 확인 결과, setcookie는 HTTP 요청 응답의 헤더를 통해 완료되며 요청 응답 내용이 출력되기 전에 실행되어야 하는 것으로 나타났습니다(다른 헤더 설정과 마찬가지로).
php.ini에서 error_reporting = E_ALL의 경우 내용을 출력하고 쿠키를 설정하면 다음과 같은 프롬프트가 뜹니다.
Warning: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\b.php:2) in … on line …
그런데 php.ini가 error_reporting =으로 설정되어 있기 때문입니다. 그 당시에는 E_ALL & ~E_NOTICE이므로 프롬프트가 없으므로 개발 시 일부 비정상적인 상황의 관찰을 용이하게 하기 위해 error_reporting = E_ALL을 설정하는 것이 좋습니다.
첨부된 것은 setcookie 사용법의 예입니다
a.php
<?php setcookie("page", "a.php"); $page = $_COOKIE["page"] ? $_COOKIE["page"] : "unknown"; echo "From " . $page . "<br /><br />"; ?> This is a.php. Go to <a href="b.php">b.php</a>
b.php
<?php setcookie("page", "b.php"); $page = isset($_COOKIE["page"]) ? $_COOKIE["page"] : "unknown"; echo "From " . $page . "<br /><br />"; ?> This is b.php. Go to <a href="a.php">a.php</a>
위에서는 쿠키 설정을 소개합니다. PHP setcookie 설정 쿠키 사용법 및 유효하지 않은 설정 질문에는 쿠키 설정이 포함되어 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.
관련 기사: