Bambookit Home    Middleware

Chapter 19. Middleware




Email Submit Script

Using PHP script to dynamically set values

Note: even though in this example we use PHP, any scripting language can be used to generate the xml code (i.e. Perl, PHP, ASP, JSP, ColdFusion, etc...)

download source for version 2.0


The following XML file (emailsubmit.xml) is the initial file loaded (version 2.0)
The following program will call the script 'emailsubmit.php' script while passing the values from taken from the widgets named, 'email', 'emailfrom', 'emailto' and 'subject' (lines 05,07,08,09)

On line 11 is the actuall attribute that makes the call to the script, it reads:
execute the method 'loadGui' on the 'mainpanel' widget (Line 02) whenever the 'action' event is triggered (the action event is triggered on the mousereleased or the keyreleased event on the button).

The values passed are set on Line 03 in the widget 'mainpanel', and is set by the setData attribute (the %2c is an encoded comma, this is necessary otherwise it would appear to the parser that your are trying to call the method setData that takes four parameters (i.e. setData(string,string,string,string) ) however setData ONLY takes a single parameter, so as not to confuse the Bambookit parser, we encode the commas

Note: for version 1.6 the setData attribute would be set at Line 10, this is due to the limitation of the old addActionTarget event which 'assumed' it would be executed from the widget it was called from, and it also 'assumed' the event it would be listening for is an action event

The following php file (emailsubmit.php) is the script that is called to process the file (version 2.0)
The output of this script is an XML file that is loaded by the Bambookit GUI. We will highlight specific aspects of this script

Line 02 retrieves the client IP (sometimes this IP is the address of the ISP that the client is dialing from, to obtain a more comprehensive check, check the various refrences available to php.)

Line 03 retrieves the data passed in the URL string (PHP 4 and higher requires that you specify the values you wish to retrieve, in older versions this was not necessary)

Line 04 does a very simple check to verify a valid email address, if the email string contains the '@' sign then we would assume it is a valid email address

Line 09, this is the actual call to send an email notification to $emailto with the body of $email and the IP address $domain passed along

Line 11, do NOT name the widget 'mainpanel', this is important because this widget is a child of the original widget named 'mainpanel'. Also if we name it 'mainpanel' we would get the undesirable effect of nested children, by executing the loadGui method it would add itself to the child 'mainpanel' and not the parent 'mainpanel'.

Line 13 could easily be updated to reflect the current $email value instead of hardcoding the string 'test@email.ca'. This is left as an exercise (for guidance look at line 19)

Line 17 since this email was succesfully sent we disabled the button, setEnabled="false"

Line 19 in the status bar we indicate that the email was successfully sent and we also post the client IP address.

Line 24 this widget is sent if the email is invalid (missing the '@' symbol), the only difference is that the submit button remains enabled and the label in the statusbar is different