andreas: Probleme mit GET parameter

Hallo zusammen,

ich hab auf meiner website ein phpscript welches es den besuchern erlaubt dateien runterzuladen, die außerhalb des webpfads liegen.  Das ganze funzt super, und falls es ein problem gibt, schickt mir das script eine email zu.  Die links zu diesem script sehen folgendermaßen aus:

download.php?file=Prospectus.pdf&lang=fr

Im phpscript steht folgendes:

$filename = $_GET['file'];
$language = $_GET['lang'];
[...]

Nun ist es so dass ich in reglmäßigen abständen emails von diesem script bekomme, die mich darauf hinweisen dass eine datei nicht geöffnet werden konnte.  Der dateiname lautet:

Prospectus.pdf〈=fr

Was passiert ist offensichtlich: irgendwann bevor das phpscript die daten bearbeitet hat, ist aus dem "&lang" ein sonderbares "〈" geworden, wodurch an php bloß ein GET parameter übergeben wird, in dem halt dieser geänderte dateiname drinsteht.  Die datei gibts nicht und mein script meldet es mir.

Ich kann mir nicht erklären wie es dazu kommt.  Ich habe das ding mit allen geläufigen browsern getestet, und es funzt.  Das problem ist (meines erachtens) ja nichtmal das php, sondern ein simples GET parameter..

Ich bin ratlos, hat jemand eine idee?

Vielen dank,

andreas

  1. Achtung, ich hatte gedacht die html zeichen würden richtig interprätiert, also die codes sind durch ihre zeichen zu ersetzen:

    â = â
    Œ = zusammengezogenes OE
    © = copyright

    (ich hätte besser die vorschau ansehen sollen..)

  2. Hi,

    download.php?file=Prospectus.pdf&lang=fr

    steht das exakt so im HTML-Quelltext?
    Dann könnte es dazu führen, dass manche Browser hier Deinen Fehler korrigieren wollen und die Entity ⟨ für das Zeichen "〈" (〈) komplettieren.

    freundliche Grüße
    Ingo

    1. Hallo Ingo,

      download.php?file=Prospectus.pdf&lang=fr
      steht das exakt so im HTML-Quelltext?

      Die idee hatte ich auch schon, hab das ding geändert und statt dem & ein $amp; eingefügt, im quelltext steht somit

      download.php?file=Prospectus.pdf&lang=fr

      Vielen Dank trotzdem,

      andreas