プロが教える店舗&オフィスのセキュリティ対策術

よろしくお願いします。
複数の文字列を作成し($str_abc,$str_123)、それを元にファイルを作って、画面上に「開く、保存、キャンセル」のファイル出力ウインドウを出したいと思います。

ひとつだけなら、問題なくでるのですが、以下のように二つ一度に出したい(ファイル出力ウインドウが2つ)のですが、うまく出力することが出来ません。

どのようにやったら複数のファイルを一度に出すことができるのでしょうか。

<?php

$str_abc = "<html><body>abc</body></html>";
$str_123 = "<html><body>123</body></html>";

//$str_abcを元にabc.htmlをつくる
$fp = fopen("abc.html", 'w');
fwrite($fp,$str_abc);

$fp = fopen("abc.html",'r');
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"abc.html\"");
fpassthru($fp);

//$str_123を元に123.htmlをつくる
$hp = fopen("123.html", 'w');
fwrite($hp,$str_123);

$hp = fopen("123.html",'r');
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"123.html\"");
fpassthru($hp);

?>

よろしくお願いします。

A 回答 (2件)

仕様です、と言うのは既に言及されてるから良いとして


//socketを明示的に開き、クエリをべた書きして送信するという方法もありますね。

>//$str_123を元に123.htmlをつくる
>$hp = fopen("123.html", 'w');
>fwrite($hp,$str_123);

上記の部分について、これが投稿仕様だったら無駄な突っ込みなのでスルーして欲しいのですが
fclose($hp)をしませんと物理的な書き込みが行われません。
二回目のfopenの前にfclose()を記述しないと正常に動作しないと思われます。
    • good
    • 0

PHPの問題ではなく、httpの仕様です


つまり、不可能です。

JavaScriptと組み合わせて、連続でリクエスト投げれば擬似的に二つほぼ同時にDLできているように見せることは可能かと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!