Differences

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

english:phpwcms-system:article:contentparts:form:special-applications:php-script-and-function [2010/07/14 08:51]
Knut Heermann (flip-flop)
english:phpwcms-system:article:contentparts:form:special-applications:php-script-and-function [2018/06/03 18:09] (current)
Line 7: Line 7:
Since the release of r282 it is possible to process an own PHP function between the action “submit” and “sending the E-Mail”. This function can read all the form input, modify, and return it. See: [[english/phpwcms-system/article/contentparts/form/special-applications/php-function-include]] Since the release of r282 it is possible to process an own PHP function between the action “submit” and “sending the E-Mail”. This function can read all the form input, modify, and return it. See: [[english/phpwcms-system/article/contentparts/form/special-applications/php-function-include]]
-In this function, the e-mail address can not be manipulated. If we need this possibility, we have to resort to another method. +However, the changed data is not recorded in the database, since these data have been written into it before. If we need this possibility, we have to switch over to another method.
-A simple script in "template/inc_script/frontend_init/" -folder is processed before the PHP function call from the form.  +A simple script in template/inc_script/frontend_init/ -folder is processed before the PHP function call of the form.
- +
-**Processing order:** +
-  - Deliver the form to the browser +
-  - Submit: receiving the form with the user input +
-  - Processing the /frontend_init/ -Scripts +
-  - Processing PHP function call from the form+
\\ \\
----- 
----- 
-Docu: -- \\ +The fundamental differences between a normal %%/frontend_init/..%% -Script and the special script //(PHP function :)// which can be triggered from the form:
-Forum: --+
-**Author:** [[http://planmatrix.de|K.Heermann]] //(flip-flop) (13.07.2010)// \\ +  * **Normal %%/frontend_init/..%% -Script**: All entries will be displayed in the variable **$_POST**. The values ​​are in %%$_POST['EingabefeldName']%% and may be changed.. //(The changes are written to the DB.)//
-**CMS-Version:** >= V1.4.1 r282 \\ +
-**Version:** V1.0 //13.07.2010// \\+
 +  * **Form %%/frontend_init/..%% -Script** //(PHP function:)//: The input variables **$mail** and **$postvar** are shown, but can not be changed. Die The templates "Send To" and "send copy to" in the variable **$form** are shown and can be changed. //(The changes are not written to the DB.)//
-**Condition:**  -> [[http://www.phpwcms-docu.de/conf_inc_php_en.phtml|/config/phpwcms/conf.inc.php]] \\ 
-  * $phpwcms['allow_ext_init'] = 1; 
- 
----- 
----- 
\\ \\
-===== Example: =====+**Processing order:** 
 +  - Deliver the form to the browser. 
 +  - User input. 
 +  - Submit: receiving the form with the user input. 
 +  - Processing the %%/frontend_init/..%% -Scripts, e.g. to manipulate the contents of the variable %%$_POST['FieldName']%%. At this point, an deliberately error can be produced. The contents of a "required" field in %%$_POST['FieldName']%% will be deleted. 
 +  - Caching of form data to the database. 
 +  - Processing PHP function call from the form. The contents of the variable %%$email%% and %%$postvar%% can be read, the contents of %%$form%% can be read and write. //(These changes are not recorded in the DB.)// 
 +  - Check the fields that must be filled out ("required"). 
 +    * On error, continue at point **1.**  with error code. 
 +  - Export the cached form data into the DB. 
 +  - Sending e-mails.
-{{:deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php_script_und_funktion_fe01_de_1.gif|}} +<note important
-  +Scripts in the /frontend_init/ -folder should be used with consideration, as this is an early intervention in the system process. \\  
-\\ +These scripts should differentiate the site compared to the edited excerpt in order to avoid side effects. E.g. at least query the category.   
-//(In the graph: replace the texte-mail by location)//.  +</note>
- +
- +
- +
-There are several regions, each is assigned an email address to contact the right person for this region. +
- +
-  * The region is one of many and can be selected in a pull-down menu. The email address of the contact person is assigned.  +
-  * It often happens that several regions will be managed by one person, thus stored identical email addresses.  +
-  * In the text of the initial email the selected region are shown.   +
-  +
- +
-The last requirement excludes the use of the form from PHP function because we can not relate in a typical building a response to the selected region. //($postvar['email'] => test@example.com)// if  e.g. +
- +
-**[select email menu]** Name: **email** +
-<file+
-Bitte wählen -|- +
-Babaorum -|- obelix@lokal.arpa +
-Laudanum -|- obelix@lokal.arpa  +
-Kleinbonum -|- asterix@lokal.arpa +
-Aquarium -|- idefix@lokal.arpa +
-</file> +
- +
-If the user selects one of the first two places e.g. "Laudanum",  an identical e-mail address is returned to us, we do not know which location the user selects. //(Obelix is responsible for both places)//.  +
- +
- +
- +
- +
-**Extended Version:** +
-<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>  +
- +
-The form PHP function would provide in "$postvar['email'] => obelix@lokal.arpa", thus also here no localisation would be possible. //(<Laudanum> is filtered by the form Script)//. +
- +
-The variable "$_POST['email']" in an frontend_init-Script supplies against it e.g. " obelix@lokal.arpa". We can determine the place+
- +
-To fix the location in the output text, we place a hidden field "location" with the word "nix" //(nothing)// into the form. This field can also be used to identify the form, the frontend_init script is executed on every page request!  +
- +
-==== Script: ==== +
- +
-E.g. +
-<code php> +
- if(isset($_POST['email']) AND $_POST['email'] == 'nix') { ... +
-</code> +
-Thus, the form will be identified at least rudimentary. This is important when multiple forms are used on the site.+
- +
-The last step is to restrict the location and assignment to the variable "$_POST['ort']". \\ +
-This is possible with a simple preg_replace.  +
- +
-<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> +
- +
-In the forms PHP function in the variable "$postvar['ort'] the text " Laudanum" be located. Thus, this text is taken over in the text of the outbound email for the placeholder" {ort} ".+
\\ \\
-==== Backend: ==== +===== Short link overview =====
- +
- +
-{{:deutsch:phpwcms-system:artikel:contentparts:formular:spezielle-anwendungen:php_script_und_funktion_be01_de_1.gif|}} +
- +
-**[select email menu]** 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|}} +
- +
-**recipient - template:** +
-<code |h Empfängervorlage |h> +
-Hallo {anrede} {name},  +
- +
-E-Mail: {email} +
- +
-Ort:    {ort} +
- +
-Kommentar: +
------------------------------- +
-{kommentar} +
------------------------------- +
- +
-Das war alles - Danke. +
-</code> +
- +
-**template:** +
-<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> +
- +
- +
- +
- +
- +
 +{{indexmenu>english:phpwcms-system:article:contentparts:form/special-applications/php-script-and-function|js#doku navbar msort nsort nocookie notoc}}
english/phpwcms-system/article/contentparts/form/special-applications/php-script-and-function.1279090284.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