쿠키

2012-08-28 4 views
0

가능한 복제를 설정하지 않습니다 :
“Header Already Sent” error in PHP쿠키

나는 그것이 쿠키에 저장 한 후 사용자가 자신의 IGN (게임 내 이름)을 지정하도록 내 코드를 가지고. 그래도 작동하지 않습니다.

<form action="index.php" method="GET"> 
    Minecraft IGN: 
    <input type="text" name="ign"> 
    <input type="submit" value="Submit"> 
</form> 

<?PHP 
error_reporting(0); 
$player = $_GET["ign"]; 
$exp = time()+86400; 
setcookie("ign", $player, $exp, "/", "", ""); 

if (isset($player)) { 
    echo "Your Minecraft Ingame Name Was Set To $player!"; 
} 
?> 

<br> 

<?PHP 
if (isset($player)) { 
    echo '<p>Click <a href="http://gophobia.com/phpsend/">Here</a> To Redeem Ur Prizes :3</p>'; 
} 
echo '<br />'; 
print_r($_COOKIE); 
?> 
+4

무엇이 necrohhh입니까? –

+0

수정 됨. 죄송합니다. 그것은 내가 설정하려고 애쓰는 이름입니다. 수동으로 주사위를 시도하지 않았습니다. 이제 $ player – Necrohhh

+0

으로 돌아갑니다. 결과는 무엇입니까? –

답변

2

이것은 매우 일반적인 실수이지만 쉽게 고칠 수있는 오류입니다.

이 설명서에서 직선이지만 더 나은 말한다 내가 할 수있는 것보다 다음 HTTP 헤더의 나머지와 함께 전송되는

의 setcookie() 쿠키를 정의합니다. 다른 헤더와 마찬가지로 스크립트의 출력 전에 쿠키를 보내야합니다 (프로토콜 제한 사항). 이 은 (<html><head> 태그 포함) 및 공백을 포함하여 출력하기 전에이 함수를 호출해야합니다.

http://php.net/manual/en/function.setcookie.php

핵심

는이 모든 출력하기 전에 호출해야한다는 것입니다.

+2

또한 기억해야 할 사항은 다음과 같습니다. 쿠키가 클라이언트 측에서 설정됩니다. 클라이언트가 요청의 일부로 쿠키를 사용하여 요청을 서버로 다시 보낼 때까지는 서버에서 볼 수 없습니다. 따라서 설정 한 후에 다른 페이지를로드 할 때까지 $ _COOKIE에 표시되지 않습니다. – bencoder

+0

이것은 나를 위해 일했습니다.]. 무리 감사. 나는 그것이 어리석은 무엇임을 알았다 : D – Necrohhh

1

코드가 제대로 동작 할 수 있습니다. 이 스크립트는 페이지가로드 될 때 쿠키를 설정합니다. 그러나 쿠키를 설정하고 값을 검색하는 것이 단일 인스턴스에서 작동 할 수 없으므로 값을 검색하기 위해 다시로드를 페이징해야합니다.