2012-02-12 7 views
4

これにはどのような構文が適していますか?可変PHPダウンロードヘッダーファイル名?

header('Content-Disposition: attachment; filename="{$_SESSION['name']} . '.txt'); 

このファイル作品は、しかしのみ正しくとき、「ソースを表示」(HTMLフォーマットされますが、正しい改行が含まれていません)。

<?php 
header("Content-type: text/html"); 
session_start(); 
    if(file_exists("chat") && filesize("chat") > 0){ 
     $handle = fopen("chat", "r"); 
     $contents = fread($handle, filesize("chat")); 
     fclose($handle); 
     ob_start(); 
$download = strip_tags($contents, '<br>'); 
$processed = preg_replace('#<br\s*/?>#i', "\n", $download); 
echo $processed; 
$var = ob_get_clean(); 
echo $var; 
    } 
?> 

$_SESSION['name']変数はguest_158512のようなものであり、あなたは私が保存しようとしているページのソースを表示する場合、それはすべての改行を持っています。現在のページを適切な構文でguest_158512.txtとして保存するにはどうすればよいですか?

+0

'filename =" {$ _ SESSION ['name']}。 '.txt'' '' 'を閉じますか? – Cheery

答えて

6

あなたの問題は、あなたが一重引用符を使用しようとしていることです。一重引用符はPHPで変数を補間しません。

文字列を正しく終了できませんでした。おそらく、その中に一重引用符が多く含まれている可能性があります。試してみてください:

header('Content-Disposition: attachment; filename="'.$_SESSION['name'].'.txt"'); 

Kolinkもpoints outあなたはプレーンテキスト以外のHTMLファイルを提供するためにContent-Type: text/plainを使用する必要があること。

+0

投稿した皆様に感謝します。ファイルの名前が正しく設定され、正しく保存されます。メモ帳でファイルを開くと、行は保存されません。しかしMS Word、DreamWeaver、または他の "アプリケーション"で開くと、その行はそこにとどまります。私はそれを解決する方法がわかりません。編集:\ r \ nの代わりに\ n? – ionFish

+0

@mesh Unixの行末( '\ n')は、Windowsの行末(' \ r \ n')が必要なメモ帳では処理されません。 – Borealid

+0

これはすでに自分で動作していますが、将来のユーザーのためにここに文書化されていますか? – ionFish

0

もうすぐです。単一引用符を使用すると、次の操作を行うことがあります。

header('Content-Disposition: attachment; filename="' . $_SESSION['name'] . '.txt"'); 
+0

ファイル名の大文字と小文字の間にスペースを入れて引用符を付けることをお勧めします。ちょうどその場合:) – Cheery

+0

良い点、Cheery。 – Josh

1
header("Content-Disposition: attachment; filename=\"".$_SESSION['name'].".txt\""); 
header("Content-Type: text/plain"); 

を今後の参考のために、あなたの引用符がひどく一致しないことを示すだろうな++メモ帳などの適切なコードエディタを使用して。

関連する問題