2016-12-24 12 views
5

私は、プレーンテキストを含むPHPでのオンザフライでのファイルを作成し、次のコードを使用して、それをダウンロードするには、ブラウザを言っている:作成ファイル(拡張子が付い号)

# Create the verification file and force-download it. 
header("Content-type: text/plain"); 
header("Content-Disposition: attachment; filename='.ecf'"); #1 
header("Pragma: no-cache"); 
header("Expires: 0"); 
echo "..."; 

として、 #1で指定された行に示されている、私は私の現在のコード、それがダウンロードされたとき、それがecfという名前です(拡張子なし)と、.ecf命名することに被ダウンロードしたファイルをしたいです。

にはどうすれば.ecf代わりのecfとしてファイルを保存するためにPHPを伝えることができますか?


注:私はその場でファイルを作成し、ダウンロードしようとする際に拡張子を持つといないではないダウンロードしたファイルに嘘に直面しています問題なので、重複したとして、この質問をマークご遠慮下さいそれに関する無数の既存の質問の


編集:もコメントで指摘したように、私はドットを脱出しようとしたが、その後、ダウンロードしたファイルは、-.ecf命名されます。

+0

おそらく、「拡張子のみ」ではない名前(「file.ecf」など)には問題はありませんでした。あなたはドット( '\ .ecf')、またはあなたが質問に示したもの以外の方法でエスケープしようとしましたか? –

+0

はい@cale_b、私はドットをエスケープしようとしましたが、残念なことにファイル名は '' -.ecf' ** –

+3

となりました。適切な場所に保存すると、 '.htaccess'が騒乱を引き起こす可能性があります。 – ceejayoz

答えて

1

これはブラウザレベルでのセキュリティ制限です。 .で始まるファイル - "ドットファイル" - はOSXとLinuxでは特別な機能を持ちます(デフォルトでは隠されています)ので、ユーザのダウンロードフォルダにファイルをドロップすると、悪意のある行為を許可する可能性があります。

https://www.w3.org/TR/html5/links.html#downloading-resources

そうでない場合は、名前付きの型は、潜在的に危険であることが知られている場合(例えばそれはネイティブ実行ファイル、シェルスクリプト、HTMLアプリケーション、または実行-マクロなどのプラットフォームの規則によって処理されます既知の安全な拡張子(例えば ".txt")を追加するためにファイル名を任意に変更します。

+0

@ceejayozという情報をありがとう。質問を投稿してからかなりの時間が経過し、私はそれを最終的に把握しましたが、同様の問題を抱えている人々があなたの答えから大きな恩恵を受けると確信しています! –

+1

@AngelPolitisありがとう!理由は分かりませんが、今日これがトップページに飛び出しました。 :-) – ceejayoz

+1

あなたは大歓迎です!私はそれが他の答えのためにポップアップしたと思います。他の人がどのように掘り出したかわからない –

-1

phpでファイルを作成できます。ここでは、私が.php拡張子を使って試したことがあります:

<? 
$file = "test.php"; 
$content ="testing\n That is\n working"; 
if(!is_file($file)){ 
    file_put_contents($file, $content); 
} 
?> 

! before is_fileは、ファイルが名前で終了しないかどうかを確認した後、ファイルを作成して$ contentの内容で埋めることを意味します。

多分これはあなたのためのものです。ヘッダーを$ fileにポイントするだけですか?

+0

ちょっと@Cordux、あなたはあなたの投稿に答えたいと思いますか?トピックに関連していないようです。 –

関連する問題