Änfängerfrage zu Formularen und POST mit PERL

tennessee

tennessee

Linuxfan
Hallo zusammen,

ich möchte mittels Formular DB Einträge vornehmen lassen.
Dabei poste ich mein Formular an mich selbst. (method=post)

Nun habe ich das Problem das bei jedem Refresh der DB Eintrag gemacht wird.
Es soll aber nur bei klick auf senden passieren

Ich habe versucht das so zu lösen aber irgendwie behält er den Wert so das die Bedingung erfüllt ist

PHP:
if ($action eq "eintragen") {
print $action;
print ("DB Eintrag wird gemacht");
 $dbh->do("insert into seminare (`name`, `titel`, `beschreibung`) values ('$name', '$titel', '$beschreibung')");
my $action="null";
}

Gibts irgendwie ne Möglich $cgi->Vars() nach der Transaktion zu leeren?


Besten Dank im Voraus
 
Zuletzt bearbeitet:
Erstmal:
Code:
use strict;
use warnings;
an den Anfang packen. Der Grund warum die if-Abfrage true bleibt ist der, dass du nicht verstehst, was my macht. Es legt in deinem Beispiel eine neue Variable $action innerhalb der if-Bedingung an, die mit dem Ende des Blocks aufhört zu existieren.

Und $cgi->Vars() ist eine Funktion (oder Methode, wenn man sich um Namen kümmert).
Die kann man nicht wirklich "leeren". Die Daten(struktur), die sie allerdings zurückgibt, kann man eventuell leeren. Ist die Frage, wie / ob das sinnvoll ist...

Der Sicherheit zu Liebe, solltest du btw statt
Code:
$dbh->do("insert into seminare (`name`, `titel`, `beschreibung`) values ('$name', '$titel', '$beschreibung')")
lieber:
Code:
my $sth = $dbh->prepare("insert into seminare (`name`, `titel`, `beschreibung`) values (?, ?, ?)");
$sth->execute($name, $title, $beschreibung);
oder so machen.

Und schlussendlich: s/PERL/Perl/g;
 

Ähnliche Themen

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

CMS Problem [php]

Squid nur zum maskieren der eigenen IP, nicht für Webserver auf port 80

Variable wird nicht übergeben!

Zurück
Oben