물론이 문제를 숙고 한 지 몇 시간이 지난 후에도 제 질문에 대한 첫 번째 의견을 통해 즉시 해결할 수 있습니다.PHP fopen에 원하지 않는 내용이 포함되어 있습니다.
문제는 페이지의 맨 위에있는 고유 한 함수 내에이 코드를 포함하고 있었지만 특정 플래그가 $ _POST 배열에 설정된 경우에만이 코드를 호출했기 때문입니다. PHP 파일이 끝날 때까지는 플래그를 확인하지 않았습니다. 나는 함수 앞에 그 검사를 옮겼다. 내가 출력 PHP에서) (CSV 파일을 함수를하면 fopen을 사용하기 위해 노력하고있어
, 그것이 내가 원하는 데이터를 포함하고 있지만, 그것은 또한 전체를 포함
원래 질문은 다음과 같습니다 실제로 출력하려는 내용 앞에 페이지의 HTML 구조는 물론 인라인 스타일 시트가 있습니다.
나는이 코드를 (here에서) 거의 변하지 않았습니다. 나는 PHP 스트리밍 및 출력에 매우 익숙하지 않은, 그래서 나는 확고한 기초이었다 무슨 희망에서 시작 :
$fileName = 'somefile.csv';
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Description: File Transfer');
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename={$fileName}");
header("Expires: 0");
header("Pragma: public");
$fh = @fopen('php://output', 'w');
global $wpdb;
$query = "SELECT * FROM `{$wpdb->prefix}my_table`";
$results = $wpdb->get_results($query, ARRAY_A);
$headerDisplayed = false;
foreach ($results as $data) {
// Add a header row if it hasn't been added yet
if (!$headerDisplayed) {
// Use the keys from $data as the titles
fputcsv($fh, array_keys($data));
$headerDisplayed = true;
}
// Put the data into the stream
fputcsv($fh, $data);
}
// Close the file
fclose($fh);
// Make sure nothing else is sent, our file is done
exit;
내 가정이 예는 자신의 외부 PHP 파일에 포함되는 것이다, 그러나 때문에 된 것입니다 내가 처리하고있는 제약 조건에, 대신 인라인으로 포함하려고합니다. 출력 결과에 긍정적 인 결과가 전혀 없으므로 다소 혼란 스럽다.하지만 이것들에 대한 PHP 문서는 매우 드물기 때문에 아마도 필자가 빠진 것이있다.
인라인 어떻게? 이 코드가 다른 코드에 어떻게 포함되어 있는지 보여 줄 수 있습니까? – webbiedave
믿거 나 말거나, 귀하의 질문에 실제로 문제가 해결되었습니다 :) 문제는 내가이 코드를 페이지의 맨 위에있는 고유 한 함수 내에 포함하고 있었지만 특정 플래그가 설정된 경우에만이 코드를 호출했습니다. $ _POST 배열. PHP 파일이 끝날 때까지는 플래그를 확인하지 않았습니다. 나는 함수 앞에 그 검사를 옮겼다. 감사합니다. – Peter