サイトの使用状況に関する内部分析をサイトが生成する設定があります。ユーザーは個人分析のダウンロードを要求できます。この情報は機密情報であるため、ファイルを作成していません。変数にCSVファイルを生成し、これをユーザーに「プッシュ」します。
function _cex_download( $output, $filename )
{
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: private");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=$filename");
header("Accept-Ranges: bytes");
echo $output;
exit;
}
これにより、ユーザーのブラウザに「ファイルの保存」ダイアログが表示され、ユーザーがファイルを作成します。サイトの管理者が「破壊的なエクスポート」をトリガーできることを除いて、これは正常に機能します。この状況では、破壊的なエクスポートを実行する前に管理者が受け入れる必要がある二次確認フォームがあります。
問題は、この「プッシュダウンロード」ルーチンがDrupalページの処理を終了することです。プッシュダウンロードルーチンが呼び出された後、管理者をページにリダイレクトする方法はありません。管理者はブラウザから「ファイルを保存」ダイアログを表示しますが、確認フォームには残ります。
私はマルチステップフォームルートを試してみましたが、奇妙なリダイレクトで1日たたき回った後、私はその混乱から後退しました。ChaosToolのマルチステップフォームロジックも検討し始めました。しかし、問題は本当にこの「プッシュダウンロード」がガイド付きプロセスキラーであるということです。
おそらく、最初の「エクスポート」ボタンのクリックをインターセプトするjquery確認ダイアログ、完全にJavaScriptで確認、php / FAPI確認フォームの作成を忘れ、ユーザーがjqueryで確認すると、インターセプトされたエクスポートをプログラムで送信しますか?