zet: skript stoppen und auf erlaubnis warten

Hallo liebes Forenteam.

Bin eigentlich aktiver leser hier aber nun stehe ich vor einem problem was sich auch nicht durchs lesen löst (zumindest finde ich weder eine passende antwort in der sufu noch in google).

Also nehmen wir mal ein ganz simples beispiel (ich weiss es hat macht keinen sinn aber jetzt nur als beispiel):
ich möchte das ein user eine rechnung eingeben kann danach wird ihm eine email geschickt wenn er einen link in der email anklickt soll erst ausgerechnet werden. So ähnlich also wie bei vielen anmeldungen.
Wie kann ich sowas machen?? ich weiss einfach nicht wie ich soetwas mache im moment hab ich es mir so gedacht:
(wird natürlich als cgi 'umgebaut' und erweitert)

###############################################################
#/usr/bin/perl

print "Bitte gib die erste zahl ein";

$zahleins = <STDIN>;
chomp $zahleins;

print "Bitte gib die zweite zahl ein";

$zahlzwei = <STDIN>;
chomp $zahlzwei;

$ergebnis = $zahleins + $zahlzwei;

exit; #?

(nun sollte irgendwie geprüft werden ob der link in der email angeklickt worden ist wenn ja dann:)

print "Ergebnis ist $ergebnis";

(wenn nicht dann ignorieren (und alles zurücksetzen))
#################################################################

Ich habe mir schon gedacht einen wert in einer datei zu speichern und mit einer if abfrage den true/false wert aus zu lesen und diesen sobald die antwort erfolgt ist den wert auf 0 setzen aber wenn mehrere fast gleichzeitig den link anklicken gerät alles durcheinander.

Wie kann ich das machen oder besser gesagt wie machen es die "großen"???

Danke im vorraus!!!

  1. Wie kann ich sowas machen?? ich weiss einfach nicht wie ich soetwas mache im moment hab ich es mir so gedacht:

    Falscher Ansatz, Konsole ist nicht CGI!

    (wird natürlich als cgi 'umgebaut' und erweitert)

    Damit wirst Du wohl scheitern. Zur Erklärung: CGI setzt HTTP voraus, das nach der ganz simplen Methodik "Frage - Antwort" arbeitet. Ein Script erhält *eine* Frage, gibt *eine* Antwort und ist damit erledigt. Deshalb ist Dein Konsolenprogramm so in CGI nicht umsetzbar.

    Ich habe mir schon gedacht einen wert in einer datei zu speichern und mit einer if abfrage den true/false wert aus zu lesen und diesen sobald die antwort erfolgt ist den wert auf 0 setzen aber wenn mehrere fast gleichzeitig den link anklicken gerät alles durcheinander.

    Der Ansatz ist schon mal nicht verkehrt. Du legst im ersten Schritt (Script) die Werte serverseitig ab (Datenbank o.ä.) und versiehst sie mit einem eindeutigen Schlüssel. Dieser Schlüssel wird als GET-Parameter an den Bestätigungslink angehängt. Das mit diesem Schlüssel aufgerufene Script nimmt die erforderlichen Prüfungen vor und gibt die hinterlegten Daten im Erfolgsfall zur Verarbeitung frei. Als Antwort auf den Bestätigungslink erhält der User seine Berechnungsseite, wo er dann ggf. weitere Dinge veranlassen kann (Ausdruck, Bestellung auslösen o.ä.).

    Natürlich kannst Du das alles in einem einzigen Script unterbringen, musst dazu aber am Anfang eine Fallunterscheidung einbauen, in welchem Kontext es aufgerufen wurde, entweder zur Dateneingabe oder zur Bestätigung der Daten.

    Siechfred

    --
    Obacht, hinter jedem noch so kleinen Busch könnte ein Indianer sitzen!
    1. Vielen dank jetzt weiss ich wenigstens woran ich arbeiten muss aber ich zweifle immernoch daran das das skript durcheinander geraten kann wenn mehrere (gleeichzeitig) den link anklicken trotz eindeutigem schlüssel.

      Hättest du mir da vielleicht noch einen tip wie ich das sicherer machen könnte?

      1. Vielen dank jetzt weiss ich wenigstens woran ich arbeiten muss aber ich zweifle immernoch daran das das skript durcheinander geraten kann wenn mehrere (gleeichzeitig) den link anklicken trotz eindeutigem schlüssel.

        Sorge dafür, dass für jede Dateneingabe nur ein Schlüssel generiert wird. Dann kann User X 25 mal verschiedene Daten eingeben und erhält halt 25 Bestätigungslinks, und nichts geht durcheinander.

        Das Script selber wird nicht durcheinandergeraten, da für jede HTTP-Anfrage eine eigene Instanz gestartet wird. Probleme könnte es bei der Datenverwaltung geben, je nachdem, wie Du die Daten speicherst. Bei Datenbank-Managementsystemen gibt es da grundsätzlich keine Bedenken, die sind intelligent genug, dass da nichts durcheinander gerät. Willst Du mit Flatfiles arbeiten, dann schau Dir den Artikel Sperren von Dateien an.

        Siechfred

        --
        Obacht, hinter jedem noch so kleinen Busch könnte ein Indianer sitzen!