2012-11-19 2 views
0

지금 몇 시간 동안 비틀어서 켜기 만하면 몇 가지 의미가 있습니다. 내 스위치의 경우 헤더 호출이 실행되기 전에 여러 헤더()가있다 필자는 6000 행의 둘레 PHP 파일에서 작업헤더() 문제. 변수 대신 전체 HTML 문서를 인쇄합니다.

...

호출합니다.

header() 호출은 ob_start()를 사용하면 작동합니다. 및 ob_end_flush(); 문서 상단과 하단에 있습니다. 내가 이해 해달라고 몇 가지 이유를 들어

이 :

$csv = urldecode($source['csv']); 
$filename = urldecode($source['file']);  

header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Disposition: attachment; filename=$filename"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

print $csv; 
break; 

대신 변수 느릅 나무가 인쇄하고 클라이언트 브라우저에 대한 .csv 파일을 저장하도록되어 단지 $ csv 파일의 전체 HTML - 문서를 출력합니다.

아이디어가 있으십니까? :)

참고 : 전화는 PHP 문서 -> 게시 -> $ csv 및 $ filename에서 이루어지며 둘 다 $ _POST []입니다.

+1

전체 코드보기 –

+0

HTML 문서가 왜 관련되어 있습니까? 둘 중 하나만 CSV 또는 HTML을 출력하고 있습니다. – deceze

+0

그게 궁금 해서요. 변수에는 CSV 형식의 데이터 만 들어 있고 .csv 파일에는 과 CSV 데이터가 들어 있습니다. – JazzCat

답변

3

break 대신 exit을 사용하십시오!

그렇지 않으면 다른 코드가 실행될 수 있습니다.

+0

나는 '죽는다'를 선호한다. 편지를 덜 입력 할 수 있습니다. –

+0

스위치 케이스에 있습니다. 휴식은 보통 표준인가? – JazzCat

+0

스위치의 컨텍스트에서'break '가 올바른 것입니다. 그러나 코드 실행을 종료하기 위해 header()를 통해 파일을 전달한 후에도 중요합니다! 그러므로'exit;'와'break;'를 사용하십시오. – powtac

관련 문제