header('Location:xx')について
こんにちは、外国人ですから、下記の内容は理解し難いと思ってますが、どうぞよろしくお願いします。
質問:
A画面に二つボタンがあります、PDFdownloadボタンと戻るボタン
流れ:
(1)A画面のPDFdownloadボタンを押下して、pdfファイルを出力します。
(2)A画面の戻るボタンを押下して、B画面へ遷移します。
現象:
pdfファイルが正しく出力しましたが、戻るボタンを押下すると、B画面の内容はA画面の下に縦にダブって表示されました。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
// B画面へ戻る
if(isset($_POST["back"])){
header('Location: ./B.php');
goto done;
}
//PDFを出力する
if(isset($_POST["download"])){
if ( isset( $_SESSION["FILEPATH"] ) && $_SESSION["FILEPATH"] != "" &&
isset( $_SESSION["FILENAME"] ) && $_SESSION["FILENAME"] != "" ) {
downloadByStream(
$_SESSION["FILEPATH"]."\\".$_SESSION["FILENAME"],
$_SESSION["FILENAME"] );
}
}
done:
関数downloadByStreamは共通関数で管理しています。
function downloadByStream($filename, $title) {
$ua = $_SERVER ["HTTP_USER_AGENT"];
$file = $filename;
header ( "Cache-Control: public" );
header ( 'Pragma:public' );
if (! preg_match ( "/Firefox/", $ua )) {
header ( "Content-Type: application/force-download; charset=Shift_JIS;" );
$title = mb_convert_encoding( $title, 'SJIS-win', 'auto');
$file = mb_convert_encoding( $file, 'SJIS-win', 'auto');
}
header ( "Content-Transfer-Encoding: binary" );
header ( 'Content-Disposition: attachment; filename="' . $title . '"' );
header('Content-Length: '.filesize($file));
readfile($file);
flush();
ob_flush();
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
どうぞよろしくお願いします。
お礼
http://okwave.jp/qa3221512.html の方にあらためて投稿しました。
補足
回答ありがとうございます。 >headerの前にsession_startはありますか? はい、あります。 具体的には下記の通りです。 register_globalsはoffになっています。 session_start(); header("Content-Type: text/html; charset=euc-jp"); unset($_SESSION); $_SESSION['HOGEHOGE_FLG'] = true; header("Location:index.php"); exit;