2010-08-23 7 views
0

코드 조각은 다음과 같습니다. php.net에 따르면 출력이없고 공백도 없는지 확인해야합니다. 어떤 것도 없다. php 태그는 공백이없는 문서의 첫 번째 태그입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?setcookie()는 항상 "헤더가 이미 전송되었습니다"라는 오류 메시지가 표시됩니다.

<?php 

    // main.php 
    // 6:48 PM 8/6/2010 

    include('config.php'); 

    // Does myid cookie exist? 
    if (!isset($_COOKIE['myid'])) 
    { 
     // Generate myid 
     $myid = substr(md5(date('Ymdhis') . str_replace('.', '', $_SERVER['REMOTE_ADDR'])), 0, 10); 

     // set the cookie 
     setcookie('myid', $myid, time() + 31536000); 

답변

0

심지어 다른 스크립트에서, setcookie를 호출하기 전에 모든에서 더 출력 은없는가 필요합니다.

<?php 태그 앞에 공백이 있거나 (예 : 닫음) 공백이있는 경우 문제가 발생할 수 있습니다.

여기서 header이 호출되거나 PHP 태그 (공백 포함) 외부의 텍스트가 존재합니다. 그게 일어난 일입니다. 의심의 여지가 없습니다.

+0

이것이 바로 문제입니다. 감사합니다. :) –

0

일부 텍스트 편집기는 일부 기호를 표시하지 않습니다. main.php와 config.php가 다른 편집기를 열어 두 파일에서 <? php 전에 무언가를 확인하십시오. Windows에 대해서는 알 수 없지만 Linux에서는 vim 또는 vi을 사용할 수 있습니다. 또한 전체 오류 메시지는 정확히 오류가 시작된 곳을 알려줍니다.

0

이 오류 메시지를 읽거나 적어도 여기에 붙여 넣지 않았습니다. 그것은 당신이 잘못하고있는 것에 대한 상세한 설명을하고 있습니다.
아마도 config.php : XXX에서 출력이 시작되었다고 말할 것입니다. 꽤 분명해.

출력이 main.php : 0에서 시작되었다고 말하면 - BOM 문자 일 가능성이 높습니다. 편집기 저장 대화 상자 또는 다른 편집기를 사용하여 파일을 다시 저장해야합니다.

항상 전체 오류 메시지를 읽습니다. 무엇이 잘못되었는지는 말할 것도없고 확실하게 일어난 일도 종종 설명됩니다.

관련 문제