Differences

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

deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-script-u-funktion [2010/07/17 23:30]
Knut Heermann (flip-flop)
deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-script-u-funktion [2018/06/03 18:08] (current)
Line 1: Line 1:
{{indexmenu_n>140}} {{indexmenu_n>140}}
-====== PHP-Script- und Funktion ======+====== PHP-Script- u. Funktion ======
-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]]+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 für den Sendeprozess zurückgeben. Siehe: [[deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php-funktion-einbinden]]
-In dieser Funktion kann die eMailadresse nicht manipuliert werden. Brauchen wir jedoch diese Möglichkeit, muss auf ein anderes Verfahren zurückgegriffen werden. +Jedoch werden die geänderten Daten nicht in der Datenbank erfasst, da diese Daten schon vorher zwischengespeichert worden sind. Brauchen wir jedoch diese Möglichkeit, muss auf ein anderes Verfahren zurückgegriffen werden.
-Ein einfaches Script im "template/inc_script/frontend_init/" -Ordner wird vor dem Formular PHP Funktionsaufruf abgearbeitet. +Ein einfaches Script im template/inc_script/frontend_init/ -Ordner wird vor dem Formular PHP Funktionsaufruf abgearbeitet.
-**Prozessreihenfolge:** +\\ 
-  - Ausliefern des Formulars an den Browser +Die grundsätzlichen Unterschiede zwischen einem normalen %%/frontend_init/..%% -Script und und dem speziellen Script //(PHP-Funktion:)// welches aus dem Formular heraus angestoßen werden kann:
-  - Submit: Empfangen des Formulars mit den Usereingaben +
-  - Abarbeiten der /frontend_init/ -Scripte +
-  - Abarbeiten der PHP-Funktion aus dem Formular+
-<note important> +  * **Normales %%/frontend_init/..%% -Script**: Alle Eingaben werden in der Variablen **$_POST** dargestellt. Die Werte stehen also in %%$_POST['EingabefeldName']%% und können verändert werden.  //(Die Änderungen werden in die DB übernommen.)// Es kann ein Rücksprung zur Formulareingabe provoziert werden. Siehe auch: [[deutsch/phpwcms-system/artikel/contentparts/formular/spezielle-anwendungen/rechnen-im-feld]]
-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>+
 +  * **Formular %%/frontend_init/..%% -Script** //(PHP-Funktion:)//: Die Eingabevariablen **$mail** und **$postvar** werden dargestellt, können jedoch nicht verändert werden. Die Templates "Senden an" und "Kopie senden an" in der Variablen **$form** werden dargestellt und können verändert werden. //(Die Änderungen werden nicht in die DB übernommen.)//
----- 
----- 
-Docu: -- \\ 
-Forum: -- 
-**Autor:** [[http://planmatrix.de|K.Heermann]] //(flip-flop) (13.07.2010)// \\ +\\
-**CMS-Version:** >= V1.4.1 r282 \\ +
-**Version:** V1.0  //13.07.2010// \\+
 +**Prozessreihenfolge:**
 +  - Ausliefern des Formulars an den Browser.
 +  - Benutzereingabe.
 +  - Submit: Empfangen des Formulars mit den Benutzereingaben.
 +  - Abarbeiten der %%/frontend_init/..%% -Scripte, z.B. um den Inhalt der Variablen %%$_POST['FeldName']%% zu manipulieren. An dieser Stelle kann ein absichtlicher Fehler produziert werden, indem  der Inhalt eines "zwingend"-Felds in %%$_POST['FeldName']%% gelöscht wird.
 +  - Zwischenspeichern der Formulardaten  für die Datenbank.
 +  - Abarbeiten der PHP-Funktion aus dem Formular, die Inhalte der Variablen %%$mail%% und %%$postvar%% können gelesen, der Inhalt von %%$form%% manipuliert werden. //(Die Änderungen werden nicht in die DB übernommen.)//
 +  - Prüfen der Felder die ausgefüllt werden müssen ("zwingend").
 +    * Bei Fehler weiter bei Punkt **1.** mit Fehlerkennung.
 +  - Export der zwischengespeicherten Formulardaten in die DB.
 +  - Senden der E-Mail(s).
 +
 +<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 der Seite gegenüber den zu bearbeitenden Ausschnitt abgrenzen, um Nebeneffekte zu vermeiden. Z.B. mindestens die Kategorie abfragen.
 +</note>
-**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_und_funktion_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. 
- 
-  * 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** 
-<file> 
-Bitte wählen -|- 
-Babaorum -|- obelix@lokal.arpa 
-Laudanum -|- obelix@lokal.arpa  
-Kleinbonum -|- asterix@lokal.arpa 
-Aquarium -|- idefix@lokal.arpa 
-</file> 
- 
-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:** 
-<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'] => obelix@lokal.arpa" liefern, also wäre auch hier keine Ortsbestimmung möglich. //(<Laudanum> wird vom Formularscript gefiltert)//. 
- 
-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!  
- 
-==== Script: ==== 
- 
-Z.B. 
-<code php> 
- if(isset($_POST['email']) AND $_POST['email'] == 'nix') { ... 
-</code> 
-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']". \\ 
-Das ist mit einem einfachen preg_replace möglich, je nach Gusto.  
- 
-<code php |h form_script_email_to_location.php |h> 
-<?php 
-/** 
- ********************************************************************************************* 
- * 13.07.2010 KH: http://planmatrix.de 
- * frontend_init-Script: Manipulating the e-mail address 
- * - Determining the location and email address in form 
- ********************************************************************************************* 
- */  
-// ------------------------------------------------------------------------------------------- 
-// obligate check for phpwcms constants 
- if (!defined('PHPWCMS_ROOT')) { 
- die("You Cannot Access This Script Directly, Have a Nice Day."); } 
-// ------------------------------------------------------------------------------------------- 
- 
-if( isset($_POST['ort']) AND $_POST['ort'] == 'nix' )  // 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']  
- 
- 
-?> 
-</code> 
- 
-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. 
- 
-\\ 
- 
-==== Backend: ==== 
- 
- 
-{{:deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php_script_und_funktion_be01_de_1.gif|}} 
- 
-**[E-Mail Aufklappmenü]** Name: **email** 
-<code> 
-Bitte wählen -|- 
-Babaorum -|- <Babaorum>obelix@lokal.arpa 
-Laudanum -|- <Laudanum>obelix@lokal.arpa  
-Kleinbonum -|- <Kleinbonum>asterix@lokal.arpa 
-Aquarium -|- <Aquarium>idefix@lokal.arpa 
-</code>  
- 
-\\ 
-{{:deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php_script_und_funktion_be02_de_1.gif|}} 
- 
-**Empfängervorlage:** 
-<code |h Empfängervorlage |h> 
-Hallo {anrede} {name},  
- 
-E-Mail: {email} 
- 
-Ort:    {ort} 
- 
-Kommentar: 
------------------------------- 
-{kommentar} 
------------------------------- 
- 
-Das war alles - Danke. 
-</code> 
- 
-**Vorlage:** 
-<code |h Vorlage |h> 
-<!--form-spezial//--> 
-<div style="width:500px; margin: 0; padding:10px; border:1px solid #bbb; background: #C2E7EF;"> 
- 
-{ERROR:anrede}[B]{LABEL:anrede}[/B] *[BR]{anrede}[BR][BR] 
- 
-{ERROR:name}[B]{LABEL:name}[/B] *[BR]{name}[BR][BR] 
-  
-{ERROR:email}[B]{LABEL:email}[/B] *[BR]{email}[BR][BR] 
-  
-{ERROR:kommentar}[B]{LABEL:kommentar}[/B][BR]{kommentar}[BR][BR] 
-  
- 
-{ERROR:nospam}[B]{LABEL:nospam}[/B] *[BR]{nospam}[BR][BR] 
-  
-{submitIt} 
-  
-</div> 
-</code> 
- 
- 
- 
 +===== Kleine Linkübersicht =====
 +{{indexmenu>deutsch/phpwcms-system/artikel/contentparts/formular/spezielle-anwendungen/php-script-u-funktion/|js#doku navbar msort nsort nocookie notoc}}
deutsch/phpwcms-system/artikel/contentparts/formular/spezielle-anwendungen/php-script-u-funktion.1279402229.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