2011-01-13 3 views
0

ファイルを取得して開くdownload.phpファイルがあります。私は問題があるファイルは、 '&'ファイル名に使用されているので、ファイルが '&'でアクセスしようとしたときにファイルが見つかりません。アドレスバーに渡されたvarコンテンツで '&'を無視する

例:download.phpf = one_ & _another.pdf

私が使用download.phpファイル内のファイル名($ _GET [ 'F'])を取得上記の例では、エラーファイルをスローしませんファイル名をone_and_another.pdfに変更すると見つかりました。

はいこの方法で名前が付けられたこれらのファイルがまったくなかった場合、名前の変更はいいと思います。

私は '&'がphpの別のvarを渡そうとしているということを無視する方法を知る必要があります。

+1

$_GETを破るでしょうか? – user535617

+0

@ user535617:動作しません.HTMLエンコーディングの問題ではなくURLエンコーディングの問題です。 – BoltClock

答えて

1

あなたはおそらく、あなたのリンクに適切&urlencode()する必要があります。ユーザーの入力を受け付ける

download.php?f=one_%26_another.pdf 
0

ルール番号1:それを信用していません。

Refer to this StackOverflow answer

+0

良いアドバイスとリンクですが、彼はそのようなファイル名を信頼する*ではありません。彼はちょうどエンコーディングの問題があります。それでも、良いスキームに従って名前を変更することは、 –

+0

を考える価値があるオプションです。私はあまりにも速く読んだ! – Dekker500

2

クエリ文字列を制御することができた場合は、あなたがURLに必要な彼らはこのように見えるように、アンパサンドをエンコード:

download.php?f=one_%26_another.pdf 

はその後いつものように$_GET['f']を探します。それ以外の場合はリテラルアンパサンド&は、使用して&#038みました

{ 'f' => 'one_', '_another.pdf' => '' } 
関連する問題