Beate Mielke: Formular absenden, ohne es auszufüllen -geht das mit method="post" ?

Hallo Forum,

ich habe folgendes Problem:

Wenn ich ein Formularausgefüllt habe und es per method="get" abschicke, entsteht eine URL, die sich aus der Ursprungsadresse des Formulars und den angehängten Daten - bestehend aus Variablennamen, -inhalten und einigen Sonderzeichen - zusammensetzt.

Bedeutet, ich könnte anstatt das Formular auszufüllen, auch gleich so eine URL erzeugen, wenn ich weiß, welche Variablen, welche Inhalte bekommen werden.

Und jetzt zu meiner Frage:

Bei method="post" gehen die Daten ja bekanntlich an die Standardeingabe. Wüßte jemand einen Trick, wie ich auch so ein Formular absenden könnte, ohne es direkt auszufüllen?

Ich hoffe ich habe mich verständlich ausgedrückt ;-)

Viele Gruesse

Beate Mielke

  1. Hi,

    Bei method="post" gehen die Daten ja bekanntlich an die Standardeingabe. Wüßte jemand einen Trick, wie ich auch so ein Formular absenden könnte, ohne es direkt auszufüllen?

    Ich hoffe ich habe mich verständlich ausgedrückt ;-)

    Ja. :)

    Indem du Hidden-Felder benutzt. Diese werden nicht angezeigt, aber abgeschickt.
    Schau dir am besten mal das hier an: <../../tchh.htm>

    Gruß,
    Slyh

  2. Hallo,

    Bei method="post" gehen die Daten ja bekanntlich an die Standardeingabe. Wüßte jemand einen Trick, wie ich auch so ein Formular absenden könnte, ohne es direkt auszufüllen?

    Sicherlich, mich werden jetzt die Hüter der reinen Lehre schlagen, für das was ich jetzt da zusammenschreiben, aber in der Praxis ist es folgendermaßen:

    Oft ist es irrelevant, welche Methode Du benutzt, wenn nur dasaufgerufene Script überprüft, welche Methode Du gerade verwendet hast, uns sich dann entsprechend der aktuellen Methode die übergebenen Parameter zusammensucht.

    Wenn Du mit Perl und CGI.pm z.B. arbeitest, dann erledigt das das CGI-Modul für dich. Bis auf ein paar Ausnahmen ( Fileupload, große Datenmengen) kannst Du beide Methoden untereinander austauschen, ohne daß sich an der weiteren Scriptabarbeitung etwas ändert.

    Wenn Du z.B. ein Formular hast, welches 'Nachname' und 'Vorname' als Eingabefelder hat, und mit POST an  '/cgi-bin/xy.cgi' gesandt wird, dann könntest Du das gleiche Ergebnis mit dem URL
    '/cgi-bin/xy.cgi?Nachname=wasweissich&Vorname=keineahnung'
    erwarten.

    Im Umfeld ist da zwar trotzdem einiges anders, Weblog, Browser-History u.s.w, aber das Ergebnis, nähmlich die HTML-Antwort und was Du sonst noch so am Server machst, wird gleich sein.

    Willst Du hingegen verhindern, daß das Script mit GET aufgerufen wird, so mußt Du das schon explizit im Script abfragen (über das Environment z.B).

    So, ich offe _ich_ habe die Frage richtig verstanden, und meine Antwort ist auch verständlich.

    Grüße
       Klaus

    1. Hallo Klaus,

      Oft ist es irrelevant, welche Methode Du benutzt, wenn nur dasaufgerufene Script überprüft, welche Methode Du gerade verwendet hast, uns sich dann entsprechend der aktuellen Methode die übergebenen Parameter zusammensucht.

      Es ist nicht ganz so, denn zwar kann fast jedes Perl- o.a. CGI-Programm beide Methoden verarbeiten, aber dennoch wird letztendlich abgefragt, welche Methode denn nun benutzt wurde.

      Wenn Du z.B. ein Formular hast, welches 'Nachname' und 'Vorname' als Eingabefelder hat, und mit POST an  '/cgi-bin/xy.cgi' gesandt wird, dann könntest Du das gleiche Ergebnis mit dem URL
      '/cgi-bin/xy.cgi?Nachname=wasweissich&Vorname=keineahnung'

      Und deshalb geht genau diese Form nicht, weil das CGI-Programm zu diesem Zeitpunkt schon längst herausgefunden hat, daß das Formular ursprünglich mit "post" abgeschickt wurde, habe ich auch schon getestet.

      Willst Du hingegen verhindern, daß das Script mit GET aufgerufen wird, so mußt Du das schon explizit im Script abfragen (über das Environment z.B).

      Nein, ich will das Formular nicht ausfüllen, das mit "post" abgeschickt wird, sondern über irgendeien anderen Weg abschicken, das ist das Kernproblem.

      Gruß

      Beate Mielke

      1. Hallo Beate,

        Wenn Du z.B. ein Formular hast, welches 'Nachname' und 'Vorname' als Eingabefelder hat, und mit POST an  '/cgi-bin/xy.cgi' gesandt wird, dann könntest Du das gleiche Ergebnis mit dem URL
        '/cgi-bin/xy.cgi?Nachname=wasweissich&Vorname=keineahnung'

        Und deshalb geht genau diese Form nicht, weil das CGI-Programm zu diesem Zeitpunkt schon längst herausgefunden hat, daß das Formular ursprünglich mit "post" abgeschickt wurde, habe ich auch schon getestet.

        Zu welchem Zeitpunkt. Wenn ich ein Script mit GET aufrufe, dann bekommt das das Script mit. Daß es schon mal mit Post aufgerufen wurde, davon weiß das Script doch nichts mehr, ist ja schon sooo lange her;-) Jeder Aufruf des Scripts verursacht eine neuerliche Abarbeitung _inklusive_ Überprüfung mit welcher Methode es aufgerufen wurde.

        Nein, ich will das Formular nicht ausfüllen, das mit "post" abgeschickt wird, sondern über irgendeien anderen Weg abschicken, das ist das Kernproblem.

        Dann habe ich es nicht verstanden. Erklär mal genauer, waß Du machen willst?

        Ich habe es so verstanden, daß Du nach einen Weg suchst alternativ zu einem Formular ein Script mit bestimmten Parametern aufzurufen.

        Aber irren ist ja menschlich, also verzeih mir bitte.

        Grüße
          Klaus

        1. Hallo Klaus,

          Zu welchem Zeitpunkt. Wenn ich ein Script mit GET aufrufe, dann bekommt das das Script mit. Daß es schon mal mit Post aufgerufen wurde, davon weiß das Script doch nichts mehr, ist ja schon sooo lange her;-) Jeder Aufruf des Scripts verursacht eine neuerliche Abarbeitung _inklusive_ Überprüfung mit welcher Methode es aufgerufen wurde.

          ich glaube jetzt kommen wir ganz durcheinander, also das ganze noch einmal (siehe unten)

          Dann habe ich es nicht verstanden. Erklär mal genauer, waß Du machen willst?
          Aber irren ist ja menschlich, also verzeih mir bitte.

          Ups, also  wegen sowas muß man glaube ich wirklich nicht um Verzeihung bitten ;-)

          Also noch einmal mit anderen Worten:

          Irgendwo in der großen Welt des internet befindet sich eine Webseite mit einem Formular, dessen Daten mittels mothod="post" abgeschickt werden.
          Vielleicht ist es jetzt doch mal wichtig zu sagen, daß dieses Formular nicht mir gehört !!! Es befindet sich also auf einer Fremdseite und ich möchte es nur benutzen - ABER NICHT AUSFÜLLEN !!!
          Warum ich es nicht ausfüllen möchte führt jetzt zu weit.

          Wenn dieses Formular jetzt method="get" benutzen würde, könnte ich es so abschicken:
          http://www.blabla.de?var1=val1&var2=val2&var3=val3 u.s.w.

          Nun wurde diese Seite aber nunmal unter Verwendung der Methode method="post" geschrieben, also kann diese Methode nicht funktionieren.
          Deshalb ist meine Frage, wie kann ich dieses Formular über einen Trick so abschicken, daß ich es nicht ausfüllen muß.

          Ich hoffe das war jetzt klarer.

          Gruß

          Beate Mielke

          1. Hi Beate!

            Schoen dass Du mal wiederr da bist.

            Wenn ich es richtig verstanden habe, suchst Du sowas wie http://www.io.com/~jsm/autopost/. Du uebergibst einem dortigen CGI Deine Parameter via GET, und dieses wandelt das in einen POST-Request an den Zielserver um. Aber Vorsicht: Alle Daten (hinwaerts und zurueck) gehen ueber diese Art Gateway, d.h. die koennen theoretisch dort abgefangen und ausgewertet werden. Also nicht fuer sensitive Informationen verwenden. Steht aber auch dort auf der Seite.

            So long, Roland

            1. Hallo Calocybe,

              Schoen dass Du mal wiederr da bist.

              Ich habe leider nicht mehr so die Zeit, hier zu schreiben, und abgesehen davon gehen mir auch die Forumsschließungen auf die Nerven.

              Wenn ich es richtig verstanden habe, suchst Du sowas wie http://www.io.com/~jsm/autopost/. Du uebergibst einem dortigen CGI Deine Parameter via GET, und dieses wandelt das in einen POST-Request an den Zielserver um. Aber Vorsicht: Alle Daten (hinwaerts und zurueck) gehen ueber diese Art Gateway, d.h. die koennen theoretisch dort abgefangen und ausgewertet werden. Also nicht fuer sensitive Informationen verwenden. Steht aber auch dort auf der Seite.

              Jedenfalls scheint es so, daß dies der Lösung am nächsten kommt. Ich habe das ganze nicht für mich gefragt, sondern für einen Bekannten. Der darf sich jetzt die Mühe machen, die Seite durchzulesen ;-)
              Sieht jedenfalls gut aus. Danke Dir!

              Gruß

              Beate

          2. Hi,

            Irgendwo in der großen Welt des internet befindet sich eine Webseite mit einem Formular, dessen Daten mittels mothod="post" abgeschickt werden.
            Vielleicht ist es jetzt doch mal wichtig zu sagen, daß dieses Formular nicht mir gehört !!! Es befindet sich also auf einer Fremdseite und ich möchte es nur benutzen - ABER NICHT AUSFÜLLEN !!!

            ich glaube, die ganze Fragerei zielt auf eines ab: Womit? Hast Du ein eigenes Formular auf Deiner Website, willst Du das ganze nur privat von Deinem Rechner aus machen, regelmäßig von Deinem Server aus...?

            Btw: Ich gehe natürlich davon aus, daß Du mit dem Betreiber der fremden Website diese Form der Nutzung abgesprochen hast. Automatisierter Zugang ist u.U. Mißbrauch.

            Nun wurde diese Seite aber nunmal unter Verwendung der Methode method="post" geschrieben, also kann diese Methode nicht funktionieren.
            Deshalb ist meine Frage, wie kann ich dieses Formular über einen Trick so abschicken, daß ich es nicht ausfüllen muß.

            Über einen Trick gar nicht.

            Wenn Du aber beispielsweise mit Perl arbeitest, kannst Du per LWP::UserAgent wunderbar POST-Requests abschicken, genau wie es der Browser tut. Mehr dazu siehe

            perldoc LWP::UserAgent

            Cheatah

          3. Hallo Beate,

            Ah, jetzt wird etwas klarer. Heureka.

            Irgendwo in der großen Welt des internet befindet sich eine Webseite mit einem Formular, dessen Daten mittels mothod="post" abgeschickt werden.

            Jetzt wärs natürlich interessant zu wissen, welche 'action' das Formular hat. Weil eigentlich willst Du ja nicht das Formular, sondern das nachgeschaltet Auswertescript aufrufen, oder?

            Ein Formular ist ja nichts anderes als die Möglichkeit für Benutzer, Daten eingeben zu können, welche dann an ein CGI-Script gesandt werden. (Ich sag jetzt mal Script, kann natürlich auch ein Programm oder eine dll sein ;-) )

            Du brauchst also nur den HTML-Code des Formulars zu analysieren, und Dir anhand der Informationen einen passenden URL zurechtzuzimmern. (ein Haufen 'z' für ein Wort zzzzz)

            So und dem Kannst Du dann die Daten normalerweise auch per GET die Daten senden.

            Wenn allerdings das aufgerufene Script die Daten nur per POST haben will, dann kannst Du das wiederum mit Perl und LWP erledigen.

            Wenn andererseits die Action ein 'mailto:...' ist, dann kannst Du ja eine Email versenden.

            Vielleicht ist es jetzt doch mal wichtig zu sagen, daß dieses Formular nicht mir gehört !!! Es befindet sich also auf einer Fremdseite und ich möchte es nur benutzen - ABER NICHT AUSFÜLLEN !!!
            Warum ich es nicht ausfüllen möchte führt jetzt zu weit.

            Ob das alles rechlich und moralisch sauber ist, daß weiß ich nicht, das kannst und sollst aber Du entscheiden.

            Ich hoffe, ich es jetzt geschnallt und Dich auf den richtigen Weg gebracht zu haben.

            Grüße
              Klaus