mt_rand()-Ausgabe trotz Formular-Refresh belassen

Hallo und guten Abend,

Ich habe ein kleines Problem mit meinem PHP Formular.

In meinem Formular verarbeite ich einige Daten unter denen sich auch eine Zufallszahl befindet. Diese generiere ich folgendermassen:

<?php mt_srand((double)microtime()*1000000);
$zufall = mt\_rand(); $x\_auftragsnummer = gmdate("dmy") ."-". $zufall; ?\> Die generierte Zahl besteht also aus dem aktuellen Tagesdatum und der Zahl, die sich aus mt\_rand(); ergibt. Mein Problem: Bei jedem Browserrefresh entsteht eine neue Zahl. Das soll aber nicht so sein. Ich möchte bei einem Browserrefresh die zu Anfang generierte Zahl erhalten lassen, weil nach dem Datenbankeintrag der eingegebenen Daten das selbe Formular mit den selben Daten wieder aufgerufen werden. Allerdings wird meine Variable $x\_auftragsnummer immer wieder durch meine generierte Zahl überschrieben. Ich weiß nicht mehr weiter! :frowning: Erst wenn die Verarbeitung beendet ist, soll ein Neuaufruf des Formulars mit leeren Feldern eine neue Zufallszahl generiert werden. Ich habe es schon vielfach versucht aber leider vergeblich. Es wäre sehr freundlich von Ihnen/Euch, wenn mir jemand weiterhelfen würde. Besten Dank im Voraus. Viele Grüße aus Wuppertal! Laurenzo

Hi Laurenzo,
du must einfach gucken ob du schon eine zufalls zahl generiert hast.
das kannst du über zwei methoden machen.

  1. im Rahmen eine Session.
    dann prüfst du ob du in der session schon eine zufallszahl gespeichert ist.
    falls nicht. generierst du die zufallszahl und speicherst sie in der session.

  2. du gibt die zufalls zahl mit dem formular raus. das solltest du nicht tun.
    wenn es sicherheits relevant ist wenn die zahl manipuliert wird.
    in methode 2 funktioniert das dann so:

<?php if(is_empty($_REQUEST['auftragsnummer'])){
mt\_srand((double)microtime()\*1000000); $zufall = mt\_rand(); $x\_auftragsnummer = gmdate("dmy") ."-". $zufall; } ?\> im formular must du sie dann natürlich noch ausgeben: <?php echo '' ?\> ich würde dir aber empfehlen aus sicherheits gründen methode 1 empfehlen. dann kann die auftragsnummer von aussen niemand manipulieren. gruss chris > [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Christian,

vielen Dank für deine Hilfe. Es ist gelungen! :smile:
Ich mußte zwar noch eine kleine Änderung in der Schreibweise von „is_empty()“ vornehmen aber dann hat’s geklappt. Meine Anwendung hat, warum auch immer, „is_empty()“ nicht erkannt. Als ich es in „empty()“ umbenannt habe hat es dann geklappt.

Herzlichen Dank und viele Grüße aus Wuppertal!

Bis zum nächsten Mal!

Viele Grüße
Laurenzo

Hi Laurenzo,
du must einfach gucken ob du schon eine zufalls zahl generiert
hast.
das kannst du über zwei methoden machen.

  1. im Rahmen eine Session.
    dann prüfst du ob du in der session schon eine zufallszahl
    gespeichert ist.
    falls nicht. generierst du die zufallszahl und speicherst sie
    in der session.

  2. du gibt die zufalls zahl mit dem formular raus. das
    solltest du nicht tun.
    wenn es sicherheits relevant ist wenn die zahl manipuliert
    wird.
    in methode 2 funktioniert das dann so:

<?php :if(is_empty($_REQUEST['auftragsnummer'])){
mt\_srand((double)microtime()\*1000000); $zufall = mt\_rand(); $x\_auftragsnummer = gmdate("dmy") ."-". $zufall; } ?\> im formular must du sie dann natürlich noch ausgeben: <?php : echo '' ?\> ich würde dir aber empfehlen aus sicherheits gründen methode 1 empfehlen. dann kann die auftragsnummer von aussen niemand manipulieren. gruss chris > Hallo und guten Abend, > > Ich habe ein kleines Problem mit meinem PHP Formular. > > In meinem Formular verarbeite ich einige Daten unter denen > sich auch eine Zufallszahl befindet. Diese generiere ich > folgendermassen: > > <?php ::mt_srand((double)microtime()*1000000);
$zufall = mt\_rand(); > $x\_auftragsnummer = gmdate("dmy") ."-". $zufall; > ?\> > > Die generierte Zahl besteht also aus dem aktuellen Tagesdatum > und der Zahl, die sich aus mt\_rand(); ergibt. > > Mein Problem: > Bei jedem Browserrefresh entsteht eine neue Zahl. > Das soll aber nicht so sein. Ich möchte bei einem > Browserrefresh die zu Anfang generierte Zahl erhalten lassen, > weil nach dem Datenbankeintrag der eingegebenen Daten das > selbe Formular mit den selben Daten wieder aufgerufen werden. > Allerdings wird meine Variable $x\_auftragsnummer immer wieder > durch meine generierte Zahl überschrieben. Ich weiß nicht mehr > weiter! :frowning: > Erst wenn die Verarbeitung beendet ist, soll ein Neuaufruf des > Formulars mit leeren Feldern eine neue Zufallszahl generiert > werden. > > Ich habe es schon vielfach versucht aber leider vergeblich. > > Es wäre sehr freundlich von Ihnen/Euch, wenn mir jemand > weiterhelfen würde. > > Besten Dank im Voraus. > > Viele Grüße aus Wuppertal! > Laurenzo