Calocybe: Das is was für cgi-tüftler oder fortgeschrittenen - bitte helft mir!

Beitrag lesen

hye leute,

von http://127.0.0.1/cgi-bin/links/add.cgi?language=german

Genau das ist es. Der Standardweg.

halt ich nicht viel, da dem cgi später noch andere daten zugepostet werden, da kommt dann ein durcheinander raus, ausserdem würde die admin.cgi auch nicht mehr funktionieren, denn die bekommt daten in unterschielichster form übermittelt...

Wieso Durcheinander? Wenn die admin.cgi dann nicht mehr funktioniert, solltest Du vielleicht dort etwas feilen, anstatt alles andere daran anzupassen.

wie regle ich das am besten mit den formularen?
http://127.0.0.1/cgi-bin/links/add.cgi/german?id=yw&name=abc....
oder so
http://127.0.0.1/cgi-bin/links/add.cgi?id=yw&name=abc..../german

Wenn Du die Fragezeichenversion verwendest, ist es doch alles dasselbe, egal ob per Formular oder direkte URL-Angabe.

vielleicht weiss jemand von euch ne tolle lösung...

Ich arbeite zufaellig gerade an einem aehnlichen Problem. Dabei habe ich die Funktion InitQuery gebaut, die den QUERY_STRING in den globalen Hash %query reinparst. Dann kannst Du z.B. mit $query{'language'} drauf zugreifen. Vorsicht! Die hiernach gepostete Funktion habe ich aber modifiziert, um Deinem Problem naeherzukommen; sie ist nicht getestet (nicht mal auf korrekte Syntax).

sub InitQuery() {
    my @args;
    my ($field, $value);

%query = ();

@args = split(/&/, $ENV{'QUERY_STRING'});
    for (@args) {
        $_ =~ s/%3D/=/gi;           # aeltere Browser uebergeben unter Umstaenden %3D statt =
        ($field, $value) = split(/=/, $_);
        $value =~ s/+/ /g;               # + durch Leerzeichen ersetzen
        $value =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/ge;         # Hexa-Angaben -> echte Zeichen
        $query{$field} = $value;
    }
}

Du solltest insbesondere testen, was passiert, wenn die uebergebenen Daten (was halt im Formular eingegeben wurde) selbst ein oder mehrere = enthalten. Please post any results in this forum. Wenn Du trotzdem lieber die add.cgi/german -Variante bevorzugst, denn schau mal in den beiden letzten Archiv-Dateien, vor kurzem hatte glaube ich mal jemand was dazu geschrieben.

Calocybe