Raphael Richter: GET oder POST

Kann mir jemand helfen und beschreiben, wo genau der Unterschied zwischen method=GET und method=POST liegt. Ich habe mit einigen meiner Scripte und CGI.pm Probleme.

$value=$cgi->param("key")

funktioniert bei einigen meiner Scripte nur mit method=GET, nicht aber mit method=POST.
Wer kann helfen? Danke, Raphael.

  1. Hi,

    schau mal in SelfHTML <../../tgbf.htm>!

    CU
    speedy

  2. Hi  Raphael!

    funktioniert bei einigen meiner Scripte nur mit method=GET, nicht aber mit method=POST.

    Was geht denn nicht?
    Wenns mit GET nicht gehen würde, dann sinds vielleicht zu viele Daten. Aber so? Hmm!

    Aus dem "Perl cookbook":
    CGI scripts are called in two main ways, referred to as methods  - but don't confuse HTTP methods
    with Perl object methods!
    The HTTP GET method is used in document retrievals where an identical request will produce
    an identical result, such as a dictionary lookup. A GET stores form data in the URL. This means
    it can be conveniently bookmarked for canned requests, but has limitations on the total size of the data requested.

    The HTTP POST method sends form data separate from the request. It has no such size limitations,
    but cannot be bookmarked. Forms that update information on the server, like mailing in feedback or
    modifying a database entry, should use POST. Client browsers and intervening proxies are free to
    cache and refresh the results of GET requests behind your back, but they may not cache POST
    requests.

    GET is only safe for short read-only requests, whereas POST is safe for forms of any
    size, as well as for updates and feedback responses. Therefore, by default, the CGI module uses
    POST for all forms it generates.

    $value=$cgi->param("key")

    Die Zeile sollte eigentlich so aussehen: $value=$cgi->param('key')

    Gruß Frank

    1. hallo Ihr da,

      $value=$cgi->param("key")
      Die Zeile sollte eigentlich so aussehen: $value=$cgi->param('key')

      das ist dem Falle schnurzpiepegal. Strings in einfachen Anführungszeigen werden von Perl nicht interpoliert ( Variableninhalte werden nicht eingesetzt, Meta-Zeichen [\n] werden nicht eingefügt), anders als bei doppelten Anführungszeichen.
      Aber hast Du auf die Groß-Kleinschreibung geachtet? Da ist Perl nämlich heikel ('KEY' ist nicht gleich 'key')

      In der Bahandlung von Requests ist das CGI-Modul eigentlich recht unproblematisch. ob GET oder POST oder was auch immer, es macht immer was draus.
      Vielleicht sind in Deinem Formular mehrere Eingabefelder mit gleichem Namen, da hats auch schon mal schwierigkeiten gegeben.

      Grüße
      Klaus

  3. Hi,

    $value=$cgi->param("key")

    funktioniert bei einigen meiner Scripte nur mit method=GET, nicht aber mit method=POST.

    POST kommt von STDIN, und STDIN kann nur einmal gelesen werden. Definierst Du vorher vielleicht noch ein anderes new CGI?

    Cheatah