2011-01-13 9 views
0

i eine download.php-Datei, die Dateien erhält und öffnet. Ich habe ein Problem ist, dass die Dateien wurden mit dem Namen ‚&‘ im Dateinamen, damit ich Datei nicht gefunden, wenn sie versuchen auf Dateien zuzugreifen, die mit ‚&‘ in ihnen.ignorieren ‚&‘ in var Inhalt in der Adresszeile übergeben

Beispiel: download.phpf = one_ & _another.pdf

in der download.php Datei i auf den ($ _GET [ 'f']) das obige Beispiel führt die Fehlerdatei nicht der Dateiname erhalten verwenden gefunden, wenn ich den Dateinamen in one_and_another.pdf ändern, funktioniert es.

Ja Umbenennung wäre schön, wenn es auf diese Weise eine ganze Menge dieser Dateien mit dem Namen ist nicht.

Ich muss wissen, wie man die Tatsache ignorieren kann, dass "&" nicht bedeutet, dass ich im Begriff bin, ein anderes var in php zu führen.

+1

Haben Sie versucht, mit & amp? – user535617

+0

@ user535617: Funktioniert nicht, es ist kein Problem mit der HTML-Codierung, sondern ein Problem mit der URL-Codierung. – BoltClock

Antwort

1

Sie werden wahrscheinlich brauchen nur die & richtig in Ihren Links urlencode():

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

Regel Nummer 1 für die Annahme von Benutzereingaben: ihm nicht vertrauen.

Refer to this StackOverflow answer für Ihre Lösung.

+0

Guter Rat und Link, aber er * vertraut * den fraglichen Dateinamen nicht als solchen. Er hat nur ein Codierungsproblem. Dennoch ist eine Umbenennung nach einem besseren Schema eine denkwürdige Option –

+0

True. Ich lese zu schnell! – Dekker500

2

Wenn Sie die Abfrage-Strings steuern können, müssen Sie die URL Et-Zeichen kodieren, um so sie dies wie folgt aussehen:

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

für $_GET['f'] wie üblich Dann sind. Ansonsten ein wörtlicher Ampersand & würde $_GET brechen in

{ 'f' => 'one_', '_another.pdf' => '' } 
Verwandte Themen