Diskussion:Webserver/SSI

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Hinweis

Eine Diskussionsseite dient dazu, Änderungen am Artikel zu besprechen. Allerdings werden diese Seiten in unserem Wiki erfahrungsgemäß nur von sehr wenigen Leuten besucht.
  • Deshalb sollten Diskussionen über den Artikel zum Thema „SSI“ besser im SELFHTML-Forum geführt werden.
  • Unter https://forum.selfhtml.org/meta/new kannst du einen entsprechenden Beitrag erstellen.
  • Bitte hinterlasse einen entsprechenden Link auf dieser Diskussionsseite, wenn du einen Thread im Forum eröffnet hast.

QUERY_STRING_UNESCAPED ist nicht unescaped[Bearbeiten]

Im Artikel steht: QUERY_STRING_UNESCAPED: unkodierter GET-Übergabestring.

Tatsaechlich ist der aber nicht unkodiert, sondern Leerzeichen bleiben als Plus stehen und Apostrophe und Anfuehrungszeichen sind durch Backslashes escaped.
Beispiel: Wenn ich in einem HTML-Formular <input type="text" name="parameters"> schreibe und darin im Browser Obst="Apfel + Birne" eingebe, kommt beim Abschicken mittels
<!--#exec cmd="env | txt2html --caps_tag '' --preformat_trigger_lines -1" --> in Apache 2.2 heraus:
QUERY_STRING_UNESCAPED=parameters=Obst=\"Apfel+++Birne\"

Wie komme ich in meinem (per SSI aufgerufenen) Shell Script (bash) an den vom Benutzer im Formular eingegebenen Originaltext Obst="Apfel + Birne" ?
Fallas das nur mit Perl oder PHP geht, was davon ist am einfachsten ? Server ist Ubuntu 12.04 LTS. -- Juergen 80.132.150.249 16:26, 23. Mär. 2014 (CET)

Hallo,
Dies ist nicht der richtige Ort, um solche Fragen zu stellen. In Diskussionsseiten sollen Diskussionen zu der dazugehörenden Artikelseite geführt werden. Ich kann dich an das SELFHTML-Forum verweisen.
-- Matthias (Diskussion) 09:02, 24. Mär. 2014 (CET) --
Gut, aber antworten darf ich vielleicht trotzdem hier, auch wenn ich nicht im Forum gefragt habe:
Ich habe keine fertige Loesung gefunden: Sowohl uri_decode als auch uri_unescape (perl) belassen ein Plus anstelle eines Leerzeichens.
Also habe ich es am Ende in perl zu Fuss programmiert: Aus QUERY_STRING (nicht QUERY_STRING_UNESCAPED !) zuerst Plus durch Space und dann %XX durch das Hex codierte Zeichen ersetzt, wobei dann auch wieder ein (korrektes) Plus entstehen kann:
$buffer = $ENV{'QUERY_STRING'};
$buffer =~ s/[+]/ /g;
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
  ($name, $value) = split(/=/, $pair);
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
}

Es bleibt aber auf jeden Fall die fuer dieses Wiki relevante Frage, warum es QUERY_STRING_UNESCAPED heisst, wo dieser doch gar nicht unescaped, ja offenbar sogar ueberhaupt nichtmehr verwendbar ist, da (siehe Beispiel oben) Space und Plus nicht mehr unterscheidbar sind. -- Juergen 80.132.190.86 00:00, 6. Apr. 2014 (CEST)