{{indexmenu_n>140}} ====== Feldinhalt übertrag. V2 ====== Anhand einer Ortsauswahl soll eine bestimmte E-Mailadresse selektiert und übergeben werden. Version 02. Vorteile gegenüber V1: \\ * Der korrekte Fehlerfall im Ausklappmenü Ortsauswahl ist abgedeckt. Auch bei einer zweiten Fehlereingabe bleibt der Fokus im Ausklappmenü auf der vorherigen Selektion. \\ * Die E-Mailadressen werden verschlüsselt angegeben, um SPAM-Robotern keine Auslesemöglichkeit zu geben. Seit der Version V1.4.7 r414 ist es nicht mehr notwendig im Bezug auf "nicht verschlüsselte E-Mailadressen" das hier gezeigte Verfahren anzuwenden. Die E-Mailadressen werden ab dieser Version im value Feld im FE verschlüsselt. \\ ---- ---- Docu: -- \\ Forum: -- **Autor:** [[http://planmatrix.de|K.Heermann]] //(flip-flop) (16.07.2010)// \\ **CMS-Version:** >= V1.4.1 r282 \\ **Version:** V2.0 //16.07.2010// \\ **Bedingung:** -> [[http://www.phpwcms-docu.de/confincphp_de.phtml|/config/phpwcms/conf.inc.php]] \\ * $phpwcms['allow_ext_init'] = 1; ---- ---- \\ ===== Beispiel: ===== {{:deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-script-u-funktion:php_script_und_funktion02_fe01_de_1.gif|}} \\ Es gibt verschiedene Regionen, denen jeweils eine eMailadresse zugeordnet wird um den richtigen Ansprechpartner für diese Region zu kontaktieren. * Die Region ist eine von vielen und kann in einem Pulldown-Menü ausgewählt werden. Die eMailadresse des Ansprechpartners wird zugeordnet. * Es kommt häufig vor, dass mehrere Regionen von einer Person betreut werden, also identische eMailadressen hinterlegt werden müssen. * Im Text der Ausgangs-eMail soll auch die gewählte Region ausgewiesen werden. Die letzte Forderung schließt die Verwendung der Formular PHP-Funktion aus, da wir bei einem typischen Aufbau keine Rückmeldung zur ausgewählten Region beziehen können. //($postvar['email'] => test@example.com)// wenn z.B. **[E-Mail Aufklappmenü]** Name: **email** Bitte wählen -|- Babaorum -|- obelix@lokal.arpa Laudanum -|- obelix@lokal.arpa Kleinbonum -|- asterix@lokal.arpa Aquarium -|- idefix@lokal.arpa Wählt der Benutzer einen der beiden ersten Orte z.B. "Laudanum", wird uns eine identische eMailadresse zurückgeliefert, wir wissen nicht welchen Ort der Benutzer selektiert hat. //(Obelix ist für die beiden Orte Babaorum und Laudanum zuständig)//. **Erweiterte Variante V2:** * Um den Fehlerfall und die Selektion zu ermöglichen verwenden wir ein einfaches Ausklappmenü. \\ Die Auswahl kann so in $postvar['ortsauswahl'] bestimmt werden. * Die Beziehung zwischen Ortsangabe und eMailadresse wird in dem versteckten Feld "ort_email" abgelegt (Variable $_POST['ort_email']). * Für die Ausgabe des Ortes wird ein verstecktes Feld "ort" angelegt (Variable $_POST['ort']). * Für die Ausgabe der eMailadresse wird ein E-Mail-Feld "email" angelegt (Variable $_POST['email']) um die "email" als Absender eintragen zu können. Meiner Ansicht nach müssen für das gewünschte Ergebnis 4 Felder angelegt werden //(siehe unten 1-4)//, da wir ein Eingabefeld //(in diesem Fall "ortsauswahl")// nicht während der wiederholten Eingabe //(Fehlerfall)// manipulieren dürfen. Die Session setzt sonst vorherige Eingabe zurück. \\ Also wird ein einfaches Eingabefeld verwendet //(Artikelmenü)// das nicht durch das Script verändert wird. Die Zuordnung der eMailadresse zum gewählten Ort passiert im Script mit der Hilfe eines zweiten versteckten Feldes in dem diese Beziehung abgelegt ist. \\ Die eMailadresse ist unleserlich abgelegt um SPAM-Robotern keine Gelegenheit zu geben diese als solche auszulesen. //(Ort|Name*domain:tld# ---> Kleinbonum|obelix*lokal:arpa#)//. Das Zeichen # dient als Trenner der einzelnen Datensätze und muss angegeben werden. Um den Ort im Ausgabetext zu verankern legen wir ein verstecktes Feld "ort" mit dem Inhalt "nix" an. Dieses Feld kann auch zur Identifikation des Formulars dienen, denn das frontend_init-Script wird bei jedem Seitenaufruf abgearbeitet! Die eMailadresse wird im Script in das Feld "email" übergeben und kann so optional auch als Absenderadresse im Formular eingetragen werden //(Mit versteckten Feldern geht das nicht)//. \\ ==== Script: ==== Z.B. if( isset($_POST['ort']) AND isset($_POST['ort_email']) ) { ... So kann das Formular zumindest rudimentär identifiziert werden. Dies kann bei mehreren Formularen in der Site wichtig sein. Der letzte Schritt ist die Filterung des Ortes und Zuweisung zur Variablen "$_POST['ort']" und "$_POST['email']". \\ $value) { // --- location|text*domain:tld $split =preg_split('/\|/', $value, 2); // Cutting out the location if (trim($split[0]) == $ort) { $_POST['ort'] = $ort; // assign the location // Cutting out and assign the eMail $_POST['email'] = trim(preg_replace('/(.*)\|(.*)\*(.*):(.*)/is','$2@$3.$4', $value)); break; }; } } // ---- END if( $_POST['ort'] ?> An das Formular wird somit der richtige Ort weitergereicht. \\ ==== Backend: ==== {{:deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-script-u-funktion:php_script_und_funktion02_be01_de_1.gif|}} **[Aufklappmenü]** Name: **ortsauswahl** Bitte wählen-|- Babaorum Laudanum Kleinbonum Aquarium \\ **[Versteckt]** Name: **ort_email** Babaorum|obelix*lokal:arpa# Laudanum|obelix*lokal:arpa# Kleinbonum|asterix*lokal:arpa# Aquarium|idefix*lokal:arpa# \\ **[Versteckt]** Name: **ort** nix \\ **[E-Mail]** Name: **email** nix \\ {{:deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-script-u-funktion:php_script_und_funktion02_be02_de_1.gif|}} **Empfängervorlage:** Hallo {anrede} {name}, E-Mail: {email} Ort: {ort} Kommentar: ------------------------------ {kommentar} ------------------------------ Das war alles - Danke. **Vorlage:**
{ERROR:anrede}[B]{LABEL:anrede}[/B] *[BR]{anrede}[BR][BR] {ERROR:name}[B]{LABEL:name}[/B] *[BR]{name}[BR][BR] {ERROR:ortsauswahl}[B]{LABEL:ortsauswahl}[/B] *[BR]{ortsauswahl}[BR][BR] {ERROR:kommentar}[B]{LABEL:kommentar}[/B][BR]{kommentar}[BR][BR] {ERROR:nospam}[B]{LABEL:nospam}[/B] *[BR]{nospam}[BR][BR] {submitIt}