Reloadsperre nachbauen

Begonnen von dobra, April 28, 2009, 19:29:53

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

im WC gibt es doch die Reloadsperre für den Warenkorb.
Wie kann ich das bei form-Abfragen nachbauen?

Konkret:
ich habe ein Script, dass einen bestimmten Formularwert abfragt
   my $mode = ssp::get_var_form("mode");
   if ($mode eq "new") {
         utils::mail();
   }

also wenn der im Formular übergebene Wert "new" ist, wird eine Mail versandt.
Wie kann ich verhindern, daß die Mail bei jedem Seitenreload (oder F5) nochmals gesendet wird?

Nachtrag:
Lösung gefunden - funktioniert zwar, aber ich bin nicht sicher, ob das so korrekt ist?

Habe als "Benutzerdaten OK" Seite eine Dummyseite eingetragen, auf der nur das steht
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<!--spmacro:include(online_editor_modul_0_2/inc/oe_new.ipl)-->  ### = Daten in DB schreiben
<!--spmacro:module(test)
sub test {   ### mail versenden
use online_editor_modul_0_2::inc::utils;
my $mode = ssp::get_var_form("mode");
if ($mode eq "new") {
utils::mail();
}
}
-->
__test::test__
<META HTTP-EQUIV="REFRESH" CONTENT="0; URL=http://__xxpath__?show1290000051,__xxsession__">   ### auf Zielseite weiterleiten
</head>
</html>


die Mail wird also auf dieser Seite abgesendet (und die DB-Einträge gemacht) und dann sofort - hoffentlich ohne dass der Kunde es überhaupt merkt - auf die eigentliche Zielseite weitergeleitet.
Hier kann man jetzt so oft man will reloaden OHNE die mail erneut abzusenden.

aber funktioniert das META HTTP-EQUIV="REFRESH" wirklich zuverlässig?
gibt es dafür nicht doch eine bessere Lösung?
mfG
dobra

ahe

Hallo dobra,

ich würde den Mailversand nicht nur von einer Form-Variablen abhängig machen.
Besser wäre es zu prüfen, ob der neu einzutragende Datensatz schon in der DB eingetragen ist.
Falls nicht: Datensatz eintragen und Mail versenden.
Falls doch: Meldung ausgeben und abbrechen.
MfG ahe

dobra

Hallo ahe,

ja - das ist eindeutig die bessere Lösung  :D

war auch meine erste Idee, hat aber nicht funktioniert...
scheinbar hab ich da gestern irgendwas falsch gemacht  :-[

hab's jetzt nochmal versucht und SO funktioniert es
                 ...
##main::plog("db_insert_item: itemid:$itemid itemid:$pgid params:@params\n");

my $ok = ssp::db_insert_item(0, $itemid, $pgid, @params);
if ($ok == -1) { ## Artikel existiert
$errmsg = "Operation nicht erfolgreich: Artikelnr. existiert bereits. Wählen Sie eine andere Artikel-Nr.";
} else {
$errmsg = "Erfolgreich: Artikel eingefügt.";
use online_editor_modul_0_2::inc::utils;
utils::mail();

## Gültige Subcats für den Nutzer auslesen
my @scids = split(',',ssp::get_var_user("PUBSUBCAT"));
               ....


Keine Dummyseite notwendig und kein doppelter mail Versand bei reload - jetzt funktioniert alles, wie es soll

Danke (auch für den Tipp gestern, wie ich das mit den mails überhaupt machen kann)
mfG
dobra