JCB: Formularauswertung

Hallöchen :o)!

Ich hab da mal ne bescheidene Frage. Ich hab in Perl Funktionen etc., um Formulardaten weiterzuverarbeiten. Dabei werden die Daten in ein Array geschrieben. Das klappt auch soweit ganz gut. Hier mal eben kurz der Code :):

if($ENV{'REQUEST_METHOD'} eq 'GET')
 {
  $Daten = $ENV{'QUERY_STRING'}
 }
else
 {
  read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
 }

@Formularfelder = split(/&/, $Daten);
foreach $Feld (@Formularfelder)
{
  ($name, $value) = split(/=/, $Feld);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s/<!--(.|\n)*-->//g;
  $Formular[$i] = $name;
  $i = $i + 1;
  $Formular[$i] = $value;
  $i = $i + 1;
}

So, und jetzt mal zu meiner Frage. Wird der Submit-Button als Formelement mit übergeben oder wird der ausgelassen? Da ich mir da nicht so sicher bin kann ich das deshalb nicht ganz als Fehlerquelle ausgrenzen. Ich hab nämlich das Problem, dass sich der Index verschiebt. Manchmal aber auch nicht. Hoffentlich hat mich da nu einer verstanden :).

Gruß, Jan.
www.planet-1.de

  1. Hi Jan

    So, und jetzt mal zu meiner Frage. Wird der Submit-Button als Formelement mit übergeben oder wird der ausgelassen? Da ich mir da nicht so sicher bin kann ich das deshalb nicht ganz als Fehlerquelle ausgrenzen. Ich hab nämlich das Problem, dass sich der Index verschiebt. Manchmal aber auch nicht. Hoffentlich hat mich da nu einer verstanden :).

    Ja verstanden habe ich Dich. Und erstaunt bin ich. Denn ich benutze solchen Code auch en masse, habe mir aber darüber noch nie Gedanken gemacht. Versuchs doch einfach! Du weisst ja dass die Werte im Hash abgelegt werden und auf deren Namen abrufbar sind: Mit einem echo und dem Submit-Buttonname hast Du wohl Klarheit.

    Ich würde sagen: Der wird als Wert mitgegeben!

    cheers
    kaepten

    1. Hi,

      Denn ich benutze solchen Code auch en masse, habe mir aber darüber noch nie Gedanken gemacht.

      hast Du Dir denn schon mal darüber Gedanken gemacht, ob diese Strategie so sinnvoll ist?

      Versuchs doch einfach!

      Fremden Code zu übernehmen, ohne ihn zu verstehen, ist ein klarer Fall von "selbst schuld", wenn's in die Hose geht.

      Cheatah

      1. Hi

        hast Du Dir denn schon mal darüber Gedanken gemacht, ob diese Strategie so sinnvoll ist?

        Also ich glaube Du hast das ein wenig missverstanden. Der Code in dieser Art ist (soweit ich mich erinnere) bestandteil vieler Scripte die z.B. von Matt's Script archive herunter gelanden werden können. Ich habe solche scripte in verwendung: Gästebuch und Forum. -> Ich glaube das ist doch der Sinn der Sache dass die Scripts zum Download angeboten werden ;-)

        Fremden Code zu übernehmen, ohne ihn zu verstehen, ist ein klarer Fall von "selbst schuld", wenn's in die Hose geht.

        Auch Missverstanden: Habe keine Code übernommen - siehe oben. Und wer spricht von "in die hosen gehen"?

        Aber ich glaube im Grunde sind wir uns einig - interpretiere nicht so viel von selbst in Antworten hinein - BITTE :-)) Danke für Deine kompetente Antwort oben!

        cheers
        kaepten

  2. Hi,

    if($ENV{'REQUEST_METHOD'} eq 'GET')

    diesen Code solltest Du schnell vergessen. Tippe in Deinen Rechner, auf dem Du Perl installiert hast, folgendes ein:

    perldoc CGI

    und lerne. Falls Du noch gar nicht wußtest, daß Du zu Perl eine Doku auf dem Rechner hast, solltest Du noch unbedingt folgendes lesen:

    perldoc perl
    perldoc perlfaq
    perldoc perlstyle

    Dein Code versagt beispielsweise bei einem <select multiple>. Der aus dem CGI-Modul nicht.

    Wird der Submit-Button als Formelement mit übergeben

    Wenn Du <input type="submit" name="bla" value="blub"> angegeben hast, bekommst Du bla=blub übermittelt. Das ist bei _allen_ Formular-Elementen so, bis auf <input type="image" name="bla">, wo Du in bla.x und bla.y die Klick-Koordinaten erhälst.

    Ob es sich um einen Submit-Button handelte, um ein verstecktes Element, ein Dropdown oder was auch immer, erfährst Du übrigens niemals.

    Cheatah