[Thread Prev][Thread Next]   >Date Index >Thread Index

Re: Re[4]: Hilfe bei POST/GET

Harald Joerg - Fri Jun 27 14:13:52 2003

Johannes Gamperl <info@devshare.de> erläutert weiter:

> Was ich genau wollte:
>
> Ich füge über ein Formular nen Datensatz (oder mehrere) in eine
> Datenbank ein. ...

Dann solltest Du drüber nachdenken, das Formular per POST aufzurufen.
Nicht wegen des ästhetischen Reizes (keine Query in der URL), sondern
wegen RFC2616:

<cite src="rfc2616">
9.5 POST

   The POST method is used to request that the origin server accept the
   entity enclosed in the request as a new subordinate of the resource
   identified by the Request-URI in the Request-Line. POST is designed
   to allow a uniform method to cover the following functions:

      - Annotation of existing resources;

      - Posting a message to a bulletin board, newsgroup, mailing list,
        or similar group of articles;

      - Providing a block of data, such as the result of submitting a
        form, to a data-handling process;

      - Extending a database through an append operation.
</cite>

Man beachte vor allem die letzte Zeile.

> ... Anschließend komme ich wieder auf die gleiche Seite
> zurück ...

*Du* kommst nicht auf die gleiche Seite zurück.  Dein Client hat in
einer Webseite http://some.where.net/query.html ein Formular
ausgefüllt, in dem ein <form action="foodle"> drinstand und wartet
mehr oder weniger geduldig auf eine Antwort.  Ohne sich den Quelltext
der Query anzuschauen, weiss er nicht, unter welcher URL die Antwort
daherkommen wird.

Du scheinst zu wollen, dass die Antwort unter der gleichen URL
präsentiert wird, in der auch das form-Element drin war.

> und wollte da ne Meldung produzieren nach dem Motto:
>
> Datensatz Name ... erfolgreich eingefügt.

Das macht man am einfachsten so, dass man das Skript auch die Query
erzeugen läßt, nach dem Motto:

if ($query->param('irgendwas')) {
  # aha. Ausgefülltes Formular.
  print "Content-type: text/plain\n\n";
  for my $datensatz (@datensaetze) {
    print "Datensatz $datensatz erfolgreich eingefuegt\n";
  }
} else {
  # keine Parameter bisher, also fragen wir sie ab.
  if ($entweder) {
    print "Location: http://some.where.net/query.html\n\n";;
  } else {
    print "Content-type: text/html\n\n";
    print "<title>query</title><form method="POST">
    #  und so weiter
  }
}

> Wenn ich da nen Redirect mache dann muss ich die Infos für diese
> Nachricht ja mit schleppen ... oder hab ich da nen Knoten im Hirn?

Was fasziniert Dich eigentlich so am Redirect?
-- 
Cheers,
haj



Next: