문제

나는이 질문이 전에 묻는 것을 알고 있지만 문제를 일으켰다.

이상하게 도이 함수를 실행할 때 기능을 실행하기 위해 선택한 링크의 HTML이 포함됩니다.

function exportCSV($table) {
    $result = mysql_query("SHOW COLUMNS FROM ".$table."");
    $i = 0;
    if (mysql_num_rows($result) > 0) {
        while ($row = mysql_fetch_assoc($result)) {
            $csv_output .= $row['Field']."; ";
            $i++;
        }
    }
    $csv_output .= "\n";

    $values = mysql_query("SELECT * FROM ".$table."");
    while ($rowr = mysql_fetch_row($values)) {
        for ($j=0;$j<$i;$j++) {
            $csv_output .= $rowr[$j]."; ";
        }
        $csv_output .= "\n";
    }

    $filename = $file."_".date("Y-m-d_H-i",time());
    header("Content-type: application/vnd.ms-excel");
    header("Content-disposition: csv" . date("Y-m-d") . ".csv");
    header( "Content-disposition: filename=".$filename.".csv");
    print $csv_output;
    exit;
}

CSV 파일에 왜 HTML을 포함하는지 아는 사람이 있습니까?Alt Text http://i35.tinypic.com/16i9oxi.jpg

도움이 되었습니까?

해결책

내 생각에 요청 된 페이지에 관계없이 동일한 HTML 헤더 및 바닥 글을 생성하는 일종의 템플릿이 있다고 생각합니다. ExportCSV 함수가 호출되기 전에 헤더가 생성됩니다.

출력의 바닥을 표시하지는 않지만 기능이 종료 된 후 흐름 제어가 해당 코드로 계속 될 것이라고 생각하기 때문에 바닥 글도 있다고 확신합니다.

다른 팁

PHP는 실제로 내 일이 아니지만 콘텐츠를 작성하기 전에 응답 스트림을 지워야하는 것 같습니다. 아마도 다른 것이이 기능에 도달하기 전에 HTML을 스트림에 기록하고 있습니까? 템플릿이나 마스터 페이지 또는 그 특성의 무언가처럼?

HTML 컨텐츠는 일반적인 헤더/NAV 막대처럼 보입니다. 이 경로에 대해 비활성화 해야하는 콘텐츠를 자동으로 포함하는 다른 것이있는 경우?

어딘가에 제어 흐름 문제가 발생합니다. HTML 헤드 파트가 보이고 탐색은 CSV를 생성하는 것을 포함하여 모든 페이지에 기본적으로 포함 된 것 같습니다. 한 가지 솔루션은 CSV 요청을 확인하는 것이며,이 경우 HTML 코드를 포함하지 않으면 출력 버퍼링을 사용한 다음 CSV 데이터를 출력하기 직전에 모든 이전 출력을 폐기하는 것입니다.

메소드 시작시 빈 문자열로 CSV_OUTPUT 변수를 초기화하는 것이 좋습니다. 이 방법의 모든 작업은 연결이므로 이전 데이터를 가져올 수 있습니다.

전 세계에 잠재적으로 민감한 데이터를 보여주고 있음을 고려하십시오. 현재 이메일과 거리 주소를 게시 한 12 명의 사람들이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top