Chris Weber: «input type=image.......

Hallo mal wieder,

ich wußte nicht genau, ob es sich bei meinem Problem um ein HTML oder CGI Problem handelt, und habe mal CGI geschrieben, soviel dazu.

Ich habe also eine HTML-Seite mir einem Formular, das, wenn es abgeschickt wird zu einem CGI-Script übermittelt wird.  Dieses Formular besteht eigentlich nur aus einem <input type=hidden..... in dem die 'value' die Information darstellt, die an das Script gegeben werden soll und einem <input type=image..... als submit button, jedoch funzt das ganze nicht richtig, denn immer wenn ich auf das Bildchen klicke werden die Koordinaten ddes Klicks an das Script übergeben.  Wie kann ich das verhindern?

  1. Hallo Chris

    Ich habe also eine HTML-Seite mir einem Formular, das, wenn es abgeschickt wird zu einem CGI-Script übermittelt wird.  Dieses Formular besteht eigentlich nur aus einem <input type=hidden..... in dem die 'value' die Information darstellt, die an das Script gegeben werden soll und einem <input type=image..... als submit button, jedoch funzt das ganze nicht richtig, denn immer wenn ich auf das Bildchen klicke werden die Koordinaten ddes Klicks an das Script übergeben.  Wie kann ich das verhindern?

    Hmm, ich habe bislang nie ein Formular mit CGI ausgewertet, das per image-Button abgesendet wurde, aber ich kann mir eigentlich nicht vorstellen, dass die Formulardaten nach einem offiziellen Submit nicht wie ueblich uebertragen werden. Wie wertest du denn die Daten im Script aus? Stimmt die Methode beim Formular und im auswertenden Code im Script (get? post?) ueberein? Wie sprichst du das hidden-Feld im Script hinterher an?

    viele Gruesse
      Stefan Muenz

    1. Hallo Stefan und hallo alle anderen,

      hier erst mal der Quellcode des HTML-Seite:

      ----------------------------------------------
      <html>
      <head>
      <title></title>
      </head>
      <body>

      <form action="cgi-bin/killer1.pl" method=post>
      <input type=hidden name="eingabe" value="prodid">
      <input type=image src="hallo.gif" value="undweg">
      <input type=reset value="Verwerfen">
      </form>

      </body>
      </html>
      ---------------------------------------------

      Und jetzt der Quellcode von killer1.pl:

      ---------------------------------------------
      #!c:/perl/bin/perl.exe

      $daten = <STDIN>;
      open(OUT, ">>test.txt");
      { print OUT "$daten" }
      close(OUT);
      print "Content-type: text/html\n\n";
      print '<html>';
      print '<head>';
      print '<title></title>';
      print '</head>';
      print '<body>';
      print 'Danke';
      print '</body>';
      print '</html>
      --------------------------------------------

      So, wenn ich jetzt die Datei test.txt mal in irgendeinem Editor öffne, sehe ich folgendes:

      eingabe=prodid&x=18&y=27

      Dieses '&x=18&y=27' stellt meiner Meinung nach die Koordinaten meines Klicks auf das Bild da.  Was ich mit diesem Formular erreichen will ist einfach die value von dem hidden-Feld in die Textdatei zu schreiben und dieses Formular mir einem Image abschicken.

      1. Hi,

        $daten = <STDIN>;
        open(OUT, ">>test.txt");
        { print OUT "$daten" }
        close(OUT);

        So, wenn ich jetzt die Datei test.txt mal in irgendeinem Editor öffne, sehe ich folgendes:

        eingabe=prodid&x=18&y=27

        Dieses '&x=18&y=27' stellt meiner Meinung nach die Koordinaten meines Klicks auf das Bild da.  Was ich mit diesem Formular erreichen will ist einfach die value von dem hidden-Feld in die Textdatei zu schreiben und dieses Formular mir einem Image abschicken.

        völlig korrekt; das ist eines der gewollten und nicht zu verhindernden Features von <input type="image">. Du kannst aber mit einer einfachen RegExp die Parameter filtern:

        $daten = <STDIN>;
        $daten =~ s/&x=.*$//;

        Oder noch viiieeel besser:
        use CGI;
        $daten = new CGI;
        ...
        print OUT $daten->param("eingabe");

        Cheatah