私は壊れて助けを求めなければならないと思います。(3日前にやるべきだった!)
ここで何が起こるか...
- PHP はセッション変数とポスト変数を読み取り、mysql クエリから .csv ファイルを作成します。
- 「名前を付けて保存」ダイアログボックスを開こうとし、それが完了すると、別のページにジャンプします。
- ネストされた関数を使用していますが、実行すると、ダイアログ ボックスが表示されなくなります。
- 個別に機能は正常に動作します。
- 実行すると、「名前を付けて保存」ダイアログボックスはユーザー入力を待機しません
- 誰かが私が間違ったことをしたことを理解できますか、それとも私の考えを変えることができますか?
- $filename は、サーバー上に作成された CSV ファイルを指します
- $suggname は、ユーザーがダイアログ ボックスに表示するデフォルトのファイル名です。
コード:
holdit($filename,$suggname);
function holdit($filename,$suggname) {
$fp=@fopen($filename, 'rb');
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
header('Content-Type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="'.$suggname.'"' );
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Transfer-Encoding: binary");
header('Pragma: public');
header("Content-Length: ".filesize($filename));
} else {
header('Content-Type: "application/octet-stream"');
header('Content-Disposition: attachment; filename="'.$suggname.'"' );
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header('Pragma: no-cache');
header("Content-Length: ".filesize($filename));
}
fpassthru($fp);
fclose($fp);
jump();
}
function jump() {
header('Location: return_from_csv.php');
}