2011-04-11 2 views
-6

가능한 복제를 수정할 수 없습니다 :
Headers already sent by PHP헤더 정보를

나는 다음과 같은 코드에서 다음과 같은 오류를 얻고있다, 그리고 나는 이유를 완전히 확실하지 않다. 만약 당신이 그것을 고칠 방법을 말해 줄 수 있다면, 좋을 것입니다. 고맙습니다.

경고 : 헤더 정보를 수정할 수 없습니다 - 이미가 보낸 헤더 (출력에서 시작 ...) 라인에 에코 전화를 꺼내, 당신이하기 전에 브라우저에 정보를 보낼 수 없습니다 45

<?php 


    // Initialization 
    $conn = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD); 
    mysql_select_db(DB_NAME, $conn); 

    // Error checking 
    if(!$conn) { 
     die('Could not connect ' . mysql_error()); 
    } 

    // Localize the GET variables 
    $ref = isset($_GET['ref']) ? $_GET['ref'] : ""; 

    // Protect against sql injections 
    // Insert the score 
    $retval = mysql_query("INSERT INTO $table(
      site 
     ) VALUES (
      '$ref' 
     )",$conn); 

    if($retval) { 
     echo "Successfull"; 
    } else { 
     echo "Unsuccessfull " . mysql_error(); 
    } 

    mysql_close($conn); 
?> 
<?php 
$url = $_GET['url']; 
    $loc = 'Location: '. $url; 
    header($loc); 
exit; 
?> 
+5

http://stackoverflow.com/search?q=Cannot%20modify%20header%20%20information 또는 http://www.google.com/search?q=cannot+ 수정 + 헤더 + 정보 – mario

답변

6

헤더.

오류가 발생하는 경우 여전히 보여주기 위해 이런 일을 시도 할 수 있습니다 : 당신이 헤더 명령은 출력 할 수 없습니다 헤더 텍스트에 앞서를 변경하는 경우, 그렇지 않으면 헤더가 이미

if(!$retval) { 
    echo "Unsuccessfull " . mysql_error(); 
} 
1

를 전송됩니다.

즉.

if($retval) { 
    echo "Successfull"; 
} else { 
    echo "Unsuccessfull " . mysql_error(); 
} 

헤더를 변경하기 전에 텍스트를 출력하고 있습니다.

0

내가 일반적으로 권장하는 상황은 gmadd가 언급 한 것처럼 모든 출력을 끝까지 저장하는 것입니다. ob_start을 수행 할 수 있지만 추가 코드를 추가하지 않고도 문자열에 데이터를 저장하는 것을 선호합니다. .htaccess 파일에서이 파일을 지정할 수도 있다는 것을 알고 있다면 실제 경로에 ob_start 항목을 추가하는 것입니다.

내가 어떻게 할 것인지 :

$display = ""; // initiate the display string 
// etc doe here 
if($retval) { 
    $display .= "Successfull"; 
} else { 
    $display .= "Unsuccessfull " . mysql_error(); 
} 

// end of the script right before ?> 
echo $display; 
?> 

ob_start 방법은 작동하고 당신이 경로를 이동하려는 경우, 당신은 htaccess로 파일이 추가 할 수 있습니다 (아파치 설정에서에 AllowOverride 설정되어 있는지 제공)

php_value output_buffering On 

는 다시 나는 여전히 $display 저장 방법을 권장하지만, 그건 내 개인적인 의견입니다.

0

사용 :

<meta http-equiv="Refresh" content="0;url=http://www.example.com" /> 
관련 문제