PHP CSV 出力
失礼します。
現在PHPで指定したパスに置いてあるCSVを出力したいのですが、
CSVは出力できているのですが、HTMLが先頭に入ってしまいます。
htmlファイルに設置したボタンに対して
phpファイルで処理をしています。
どこかおかしい部分があればご教授頂きたいです。
HTMLファイル
<?php $self = $_SERVER["SCRIPT_NAME"]; ?>
<form method='POST' action='<?php $self ?>'>
<input type='submit' value='CSV出力' name='get_csv'>
</form>
PHPファイル
function This_Month(){
$filepath = 'hoge.csv'; //ダウンロードしたいファイルパス
$filename = 'test.csv'; //ダウンロードした際のファイル名
if(!file_exists($filepath)){
die("Error:File(".$filepath.") does not exist");
}
//オープンできるか確認
if(!($fp = fopen($filepath,"r"))) {
die("Error:Cannot open the file(".$filepath.")");
}
fclose($fp);
//ファイルサイズの確認
if(($content_length = filesize($filepath)) == 0){
die("Error:File size is 0.(".$filepath.")");
}
//ファイルの処理方法
header('Content-Disposition: attachement; filename="'.$filename.'"');
//ファイルタイプ指定
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding:binary');
//ファイルサイズ
header('Content-Length: '.filesize($filepath));
mb_convert_encoding($filepath,'utf-8','shift-jis');
readfile($filepath);
exit();
}
//ボタンに合わせて条件を変えていく
if(isset($_POST["get_csv"])){
//ユーザーから来たデータをエスケープする
$csv_output = htmlspecialchars($_POST["get_csv"], ENT_QUOTES, "UTF-8");
switch ($csv_output) {
case "CSV出力": ”This_Month();
break;
default: echo "エラー"; exit;
}
}