2017-09-06 15 views
1

私は次のようにPHPの力のダウンロードスクリプトを使用しています: -URL内にスペース(%20)を含めると、PHP Force Downloadスクリプトが動作しないのはなぜですか?

$file_Name = $_GET['name']; 
$file_Url = $_GET['file']; 
header("Cache-Control: public"); 
header("Content-Description:  File Transfer"); 
header("Content-Disposition: attachment; filename=$file_Name"); 
header("Content-Type: application/octet-stream"); 
header("Content-Transfer-Encoding: binary"); 
readfile($file_Url); 
exit; 

私のリンクのURLが似ている場合: -/image.php?name=Germany.png &ファイル= HTTPS%3A% 2F%2Fmaps.google.com%2Fmaps%2Fapi%2Fstaticmap%3Fcenter%3D ドイツ%26zoom%3D15%26size%3D240x320%26maptype%3Droadmap%26mobile%3Dtrue%26sensor%3Dfalse、これは問題なく動作しています!

URLの中にスペース(%20)を入れて訪問しようとすると、ブラウザに「ダウンロードが失敗しました」と表示されます。

例URL: -/image.php?name=Image.png &ファイル= HTTPS%3A%2F%2Fmaps.google.com%2Fmaps%2Fapi%2Fstaticmap%3Fcenter%3D リバー%20Annan %26zoom%3D15%26size%3D240x320%26maptype%3Droadmap%26mobile%3Dtrue%26sensor%3Dfalse

これはどうしてですか?何が間違っているのですか?

+1

の一般的な危難のため、実際の質問は気圧私には謎である理由を尋ねながら、私はこのスクリプトがあることを指摘したいと思いますすごく危ない。誰かがファイルに "config.php"と入力して、そのような設定ファイルを持っていたら。すべての機密情報が表示されます。入力をフィルタリングしてから使用する必要があります。 'filter_input(INPUT_GET、 'file'、FILTER_VALIDATE_URL)' – Grumpy

答えて

1

応じて、PHPのドキュメントは、「スーパーグローバル$ _GETと$ _REQUESTは既に。デコードされている」ので、20%がスペースに置き換えられているため、発生したURL

$file_Name = $_GET['name']; 
$file_Url = $_GET['file']; 
header("Cache-Control: public"); 
header("Content-Description:  File Transfer"); 
header("Content-Disposition: attachment; filename=$file_Name"); 
header("Content-Type: application/octet-stream"); 
header("Content-Transfer-Encoding: binary"); 
echo readfile(str_replace(" ","-",$file_Url)); 
exit; 
+0

'exit;'は不要ですか?あなたはそれを含めていない! –

+0

はい、ファイルを読み取った後にコンテンツが余分なデータを取得しないようにします –

+0

私は 'echo readfile(str_replace(" "、"%20 "、$ file_Url))を使用しました。 exit; '代わりに!しかし両方の作品! –

1

を読み取ろうと、その後-でスペースを置き換えます。 次のコードは動作するはずです:

readfile(urlencode($file_Url)); 

1をコード

+0

これは '/'と必要な他のコンテンツもエンコードします。 OPの例であなたの解決策を試してみてください。それはエラー –

+0

で終わってしまいます。もっと多くの作業が必要です。最初にパスを "/"で区切ってから、ドメイン以外のすべてをエンコードして再び参加してください –

関連する問題