Differences

This shows you the differences between two versions of the page.

deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-script-u-funktion:feldinhalt-uebertragen-v2 [2010/07/17 23:34]
Knut Heermann (flip-flop)
deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-script-u-funktion:feldinhalt-uebertragen-v2 [2018/06/03 18:08] (current)
Line 3: Line 3:
====== Feldinhalt übertrag. V2 ====== ====== Feldinhalt übertrag. V2 ======
-Seit der Release r282 ist es möglich eine eigene PHP-Funktion zwischen der Aktion "submit" und "dem Versenden der eMail" abzuarbeiten . Diese Funktion kann alle Formulareingaben lesen, viele verändern und zurückgeben. Siehe: [[deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-funktion-einbinden]]+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.
-In dieser Funktion kann die eMailadresse nicht manipuliert werden. Brauchen wir jedoch diese Möglichkeit, muss auf ein anderes Verfahren zurückgegriffen werden.  +<note> 
- +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.
-Ein einfaches Script im "template/inc_script/frontend_init/" -Ordner wird vor dem Formular PHP Funktionsaufruf abgearbeitet.  +
- +
-**Prozessreihenfolge:** +
-  - Ausliefern des Formulars an den Browser +
-  - Submit: Empfangen des Formulars mit den Usereingaben +
-  - Abarbeiten der /frontend_init/ -Scripte +
-  - Abarbeiten der PHP-Funktion aus dem Formular +
- +
-<note important> +
-Scripte im /frontend_init/ -Ordner sollten mit Überlegung eingesetzt werden, da dies einen frühen Eingriff in den Systemprozess darstellt. Diese Scripte sollten die Site gegenüber dem zu bearbeitenden Ausschnitt abgrenzen, um Nebeneffekte zu vermeiden.  +
</note> </note>
 +\\
---- ----
Line 27: Line 21:
Forum: -- Forum: --
-**Autor:** [[http://planmatrix.de|K.Heermann]] //(flip-flop) (13.07.2010)// \\+**Autor:** [[http://planmatrix.de|K.Heermann]] //(flip-flop) (16.07.2010)// \\
**CMS-Version:** >= V1.4.1 r282 \\ **CMS-Version:** >= V1.4.1 r282 \\
-**Version:** V1.0  //13.07.2010// \\+**Version:** V2.0  //16.07.2010// \\
Line 41: Line 35:
===== Beispiel: ===== ===== Beispiel: =====
-{{:deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php_script_und_funktion_fe01_de_1.gif|}}+{{:deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-script-u-funktion:php_script_und_funktion02_fe01_de_1.gif|}} 
   
\\ \\
-//(In der Grafik: Den Text E-Mail durch Ort ersetzen)//. +
Es gibt verschiedene Regionen, denen jeweils eine eMailadresse zugeordnet wird um den richtigen Ansprechpartner für diese Region zu kontaktieren. Es gibt verschiedene Regionen, denen jeweils eine eMailadresse zugeordnet wird um den richtigen Ansprechpartner für diese Region zu kontaktieren.
Line 65: Line 60:
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)//. 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:** +**Erweiterte Variante V2:**
-<file> +
-Bitte wählen -|- +
-Babaorum -|- <Babaorum>obelix@lokal.arpa +
-Laudanum -|- <Laudanum>obelix@lokal.arpa  +
-Kleinbonum -|- <Kleinbonum>asterix@lokal.arpa +
-Aquarium -|- <Aquarium>idefix@lokal.arpa +
-</file> +
-Die Formular PHP-Funktion würde in der Variablen "$postvar['email'] =&gt; obelix@lokal.arpa" liefern, also wäre auch hier keine Ortsbestimmung möglich. //(&lt;Laudanum&gt; wird vom Formularscript gefiltert)//.+  * 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 &quot;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 &quot;ortsauswahl&quot;)// 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.
-Die Variable "$_POST['email']" in einem frontend_init-Script liefert dagegen z.B. "<Laudanum>obelix@lokal.arpa". Wir können den Ort bestimmen. 
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! 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: ==== ==== Script: ====
Line 84: Line 83:
Z.B. Z.B.
<code php> <code php>
- if(isset($_POST['email']) AND $_POST['email'] == 'nix') { ...+ if( isset($_POST['ort']) AND isset($_POST['ort_email']) ) { ...
</code> </code>
So kann das Formular zumindest rudimentär identifiziert werden. Dies kann bei mehreren Formularen in der Site wichtig sein. 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']". \\ +Der letzte Schritt ist die Filterung des Ortes und Zuweisung zur Variablen "$_POST['ort']" und "$_POST['email']". \\
-Das ist mit einem einfachen preg_replace möglich, je nach Gusto. +
-<code php |h form_script_email_to_location.php |h>+<code php |h form_script_email_to_location_v2.php |h>
<?php <?php
/** /**
 *********************************************************************************************  *********************************************************************************************
- * 13.07.2010 KH: http://planmatrix.de+ * 16.07.2010 KH: http://planmatrix.de V2
 * frontend_init-Script: Manipulating the e-mail address  * frontend_init-Script: Manipulating the e-mail address
 * - Determining the location and email address in form  * - Determining the location and email address in form
Line 106: Line 104:
// ------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------
-if( isset($_POST['ort']) AND $_POST['ort'] == 'nix' )  // The right form?+if( isset($_POST['ort']) AND isset($_POST['ort_email']) )  // The right form?
{ {
- $email = trim($_POST['email']); 
-  
- $_POST['ort']   = preg_replace('/\<(.*)\>(.*)/is','$1', $email); // Cutting out the location 
- $_POST['email'] = preg_replace('/\<(.*)\>(.*)/is','$2', $email); //Only for completeness. Is not necessarily needed 
-  
-} // ---- END if( $_POST['ort']  
 +   $ort_email = array();
 +  
 +   $ort       = trim($_POST['ortsauswahl']);  // Nur ort enthalten
 +   $ort_email = explode('#', $_POST['ort_email']);
 +
 +   // // location|text*domain:tld
 +   if (!empty ($ort_email))
 +      foreach ($ort_email as $key=>$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']
?> ?>
Line 121: Line 135:
An das Formular wird somit der richtige Ort weitergereicht. An das Formular wird somit der richtige Ort weitergereicht.
-Testweise in der Formular PHP-Funktion in "$postvar['ort'] nachsehen, der Text "Laudanum" sollte hier nun eingetragen sein und wird in der Ausgangs-eMail im Platzhalter "{ort}" übernommen. 
\\ \\
Line 127: Line 140:
==== Backend: ==== ==== Backend: ====
 +{{:deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-script-u-funktion:php_script_und_funktion02_be01_de_1.gif|}}
-{{:deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php_script_und_funktion_be01_de_1.gif|}}+**[Aufklappmenü]** Name: **ortsauswahl** 
 +<code> 
 +Bitte wählen-|- 
 +Babaorum 
 +Laudanum 
 +Kleinbonum 
 +Aquarium 
 +</code>
-**[E-Mail Aufklappmenü]** Name: **email**+\\ 
 +**[Versteckt]** Name: **ort_email**
<code> <code>
-Bitte wählen -|- +Babaorum|obelix*lokal:arpa#  
-Babaorum -|- <Babaorum>obelix@lokal.arpa +Laudanum|obelix*lokal:arpa#  
-Laudanum -|- <Laudanum>obelix@lokal.arpa  +Kleinbonum|asterix*lokal:arpa#  
-Kleinbonum -|- <Kleinbonum>asterix@lokal.arpa +Aquarium|idefix*lokal:arpa#
-Aquarium -|- <Aquarium>idefix@lokal.arpa+
</code> </code>
\\ \\
-{{:deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php_script_und_funktion_be02_de_1.gif|}}+**[Versteckt]** Name: **ort** 
 +<code> 
 +nix 
 +</code> 
 + 
 +\\ 
 +**[E-Mail]** Name: **email** 
 +<code> 
 +nix 
 +</code> 
 + 
 +\\ 
 +{{:deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-script-u-funktion:php_script_und_funktion02_be02_de_1.gif|}}
**Empfängervorlage:** **Empfängervorlage:**
Line 167: Line 200:
{ERROR:name}[B]{LABEL:name}[/B] *[BR]{name}[BR][BR] {ERROR:name}[B]{LABEL:name}[/B] *[BR]{name}[BR][BR]
   
-{ERROR:email}[B]{LABEL:email}[/B] *[BR]{email}[BR][BR]+{ERROR:ortsauswahl}[B]{LABEL:ortsauswahl}[/B] *[BR]{ortsauswahl}[BR][BR]
   
{ERROR:kommentar}[B]{LABEL:kommentar}[/B][BR]{kommentar}[BR][BR] {ERROR:kommentar}[B]{LABEL:kommentar}[/B][BR]{kommentar}[BR][BR]
deutsch/phpwcms-system/artikel/contentparts/formular/spezielle-anwendungen/php-script-u-funktion/feldinhalt-uebertragen-v2.1279402445.txt.gz · Last modified: 2018/06/03 18:07 (external edit)
www.planmatrix.de www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0