2017-07-05 8 views
0

セッション配列からCSVとしてデータをエクスポートしようとしていますが、ダウンロード可能なドキュメントを作成するのではなく、ファイルの先頭にsession_start()をインクルードすると、ブラウザにエコーされます。私は別のアプローチをとる必要がありますか、これを解決する方法はありますか? session_start()がなければ、ファイルは作成されてダウンロードされますが、空のファイルはダウンロードされません。セッション変数をCSVファイルにエクスポートします。 PHP

header("Content-Type: text/csv;charset=utf-8"); 
    header("Content-Disposition: attachment;filename=\"$filename\""); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 

    session_start(); 
    include $_SERVER['DOCUMENT_ROOT']."/Includes/object_one.php"; 
    include $_SERVER['DOCUMENT_ROOT']."/Includes/object_two.php"; 

    $fp= fopen('php://output', 'w'); 

    foreach ($_SESSION['data'] as $fields){ 
     fputcsv($fp, $fields); 
    } 
    fclose($fp); 
    exit(); 

それは私の配列は、このフォーマットである場合に役立ちます:

$data = array(dataset1(array, of, data), dataset2(array, of, data), dataset#(array, of, data)); 

EDIT:SESSION_STARTは、問題を引き起こしているように見えるが、やる含まれていません。

+0

ブラウザ開発コンソールを使用して、2つの試行の間に送信されたヘッダーの相違を確認します。それがあなたが興味を持っているものです。 – arkascha

答えて

0

ヘッダーに問題がある可能性があります。ヘッダー関数の前に何かを印刷すると(ファイルのスペースが間違ったphp-tagが閉じられるなど)、すべてのヘッダーが機能しません。ヘッダーを宣言する前にob_clean()を入れて、動作するかどうか確認してください。

関連する問題