2016-10-17 18 views
-1
$file="csv.php?task=whovotedwho&election=7"; 
$filename = "whovotedwho-election7.csv"; 

if (file_exists("trash.png")) { 
     header('Content-Description: File Transfer'); 
     header('Content-Type: text/csv'); 
     header('Content-Disposition: attachment; filename="'.($filename).'"'); 
     header('Expires: 0'); 
     header('Cache-Control: must-revalidate'); 
     header('Pragma: public'); 
     header('Content-Length: ' . filesize("trash.png")); 
     readfile($file); 
     exit; 
    } else { echo "file does not exist"; } 

私はダウンロードしたcsvでこの結果を得ています。&が& ampに変換されるのはなぜですか?

double amp in code

+0

x-debugなどのいくつかの拡張機能がインストールされているようですが、そのうちの1つにバグがあり、ダブルhtmlエンコーディングを実行します。 –

+0

phpファイルに相当する 'readfile'ファイルはありますか? – desbest

+0

あなたはCSVファイルをダウンロードしていません。 'readfile()'が失敗したというエラーメッセージです。 – Barmar

答えて

4

この:

$file="csv.php?task=whovotedwho&election=7"; 

それはhttp://example.com/csv.php...のようなフル/絶対URLではありませんので、のReadFile()がでキックするとき、それはLOCALファイル要求をして、ファイルを探していますその名前は文字通りcsv.php?tasketc...です。NOT http要求をしています - できません。あなたは、そのhttp要求が送信されるためのプロトコルまたはホストを提供していませんでした。

PHPは<img src=kittens.jpg>のようなものが<img src="http://example.com/kittens.jpg">に内部的に翻訳されたブラウザのようなものではありません。

正直なところ、たとえあなたが完全なURLを持っていたとしても、それは非常に苦痛です.HTMLリクエストを行っているSAMEサーバーでコードを実行しています。車を走り、市内を500マイル走行して、出発した場所の左側に1フィート駐車することができます。

あなたのエラーには、生のHTMLがあります。ファイル名には&が含まれているため、出力にはリテラル&として表示されるようにHTMLエンコードされていなければなりません。また、HTMLエンティティとしてレンダリングされません。

関連する問題