Perl Formularverarbeitung
Hallo,
ich muss ein Perl-Script, welches ein Formular einer Website verarbeitet, in php umschreiben. Dort wird an einer Stelle innerhalb der SUB ParseForm folgendes gemacht:
my ($key, $prefs, $buffer);
if ($FORM{'r_PLZ'}){
my $PLZ = $FORM{'r_PLZ'};
$FORM{'r_PLZ1'} = substr($PLZ,0,1);
$FORM{'r_PLZ12'} = substr($PLZ,0,2);
}
Könnt ihr mir helfen, was das zu bedeuten hat? Im auszufüllenden Formular gibt es lediglich ein Feld r_plz, die anderen sind nicht vorhanden.
Gruß
Antwort schreiben
Antwort 1 von Dr.Ma-Busen vom 03.11.2020, 12:00 Options
Moin!
Sieht so aus als würden zwei neue "Variabeln" erstellt(r_PLZ1 und r_PLZ12) in denen jeweils ein teil von r_PLZ gespeichert werden.
my ($key, $prefs, $buffer);
if ($FORM{'r_PLZ'}){ # Wenn r_PLZ vorhanden, dann...
# r_PLZ in var. $PLZ speichern, z.B. 1234
my $PLZ = $FORM{'r_PLZ'};
# unter $FORM{'r_PLZ1'} den teil ab pos. 0 + 1 zeichen ablegen (1 von 1234)
$FORM{'r_PLZ1'} = substr($PLZ,0,1);
# unter $FORM{'r_PLZ12'} den teil ab pos. 0 +2 zeichen ablegen(12 von 1234)
$FORM{'r_PLZ12'} = substr($PLZ,0,2);
}
MfG
Antwort 2 von perl_vs_php vom 03.11.2020, 12:38 Options
Soweit hatte ich das allerdings auch schon begriffen. Was mir aber nicht klar ist, ist, dass die Substrings z.B. unter $FORM{'r_PLZ1'} abgelegt werden. Im Script wird sonst gar nicht mehr darauf zugegriffen. Und müsste das nicht eigentlich ein Feld aus dem Formular sein?
Antwort 3 von Supermax vom 03.11.2020, 13:39 Options
$FORM ist einfach nur ein assoziatives Array, das zwar ursprünglich nur die Werte aus dem Formular beinhaltet, dem man aber auch neue Schlüssel/Wert Paare zuweisen kann.
Antwort 4 von perl_vs_php vom 03.11.2020, 16:19 Options
Und nützt das denn was, wenn man darauf gar nicht mehr zugreift? Normalerweise müsste das Array dann doch wieder leer sein, wenn das Script beendet ist, oder?
Antwort 5 von katy vom 03.11.2020, 16:56 Options
Hallo perl_vs_php,
Zitat:
nützt das denn was, wenn man darauf gar nicht mehr zugreift?
nein, dann ist es einfach überflüssig.
Zitat:
Normalerweise müsste das Array dann doch wieder leer sein, wenn das Script beendet ist,
normalerweise sollte ein Programm einfach allen Speicher freigeben, den es zur Ausführung brauchte, also sollte auch das Array nicht leer sondern komplett weg sein.
katy
Antwort 6 von perl_vs_php vom 20.11.2020, 22:17 Options
Hallo,
sorry für die späte Rückmeldung. hatte mich die letzten Tage weniger mit dem Thema beschäftigt.
Jetzt hab ich da ein neues Problem:
Ich habe mehrere Formulare, die alle mit dem gleichen Skript bearbeitet werden sollen. Da die Formulare unterschiedliche Input-Felder haben, habe ich das über eine schleife gelöst. Jetzt ist aber das Problem, dass es auch ein Double-Opt-In geben soll. Erst wenn der Benutzer einen Bestätigungslink angeklickt hat, soll eine Email mit den entsprechenden Daten aus dem Formular an mich gesendet werden. Jetzt stellt sich mir aber die Frage, wie ich die Daten am besten "zwischenspeichere". Mache ich das am besten über eine Datenbank, oder lieber mit Cookies? Datenbank wäre wohl besser, aber wie kann ich das machen mit den zig verschiedenen Formularfeldern?
Viele Grüße