how to check for all the fields in user registrations perl script

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • happyse27
    New Member
    • Sep 2008
    • 236

    how to check for all the fields in user registrations perl script

    Hi All,

    I modified the user registration script, but not sure how to make it check for each variable in terms of preventing junk registration and invalid characters?
    Two codes below :
    a) html
    b) perl script (print and inserting into database)

    Cheers...
    Andrew

    a) html
    =====
    Code:
    <!DOCTYPE HTML PUBLIC "-//SoftQuad//DTD HTML 3.2 + extensions for HoTMetaL PRO 3.0(U) 19961211//EN"
     "hmpro3.dtd">
    <HTML>
    <HEAD>
    <TITLE></TITLE></HEAD>
    <BODY>
    <FORM ACTION="/cgi-bin/acctman2.pl" METHOD="POST">
    <CENTER>
    <TABLE BORDER="0" WIDTH="400">
    <TR>
    <TD ALIGN="CENTER">
    <TABLE BORDER="0" CELLPADDING="5" BGCOLOR="#FF8000">
    <TR>
    <TD><INPUT TYPE="CHECKBOX" NAME="agree" VALUE="agree"></TD>
    <TD><FONT SIZE="-1" FACE="verdana, arial, helvetica"><B>I agree to the Terms 
    and Conditions above.</B></FONT></TD></TR></TABLE><BR></TD></TR>
    <TR>
    <TD>
    <HR SIZE="2" NOSHADE="NOSHADE"></TD></TR>
    <TR>
    <TD ALIGN="CENTER">
    <TABLE BORDER="0" WIDTH="350" NOWRAP="NOWRAP">
    <TR>
    <TD><FONT SIZE="-1" FACE="verdana, arial, helvetica"><B>Customer Information</B></FONT><BR><FONT
    SIZE="-2" FACE="verdana, arial, helvetica" COLOR="#FF0000"><B>Fields marked 
    with an asterisk<BR>are required input fields.</B></FONT><BR><BR></TD></TR>
    <TR>
    <TD><INPUT TYPE="TEXT" NAME="fname">
    <FONT SIZE="-1" FACE="verdana, arial, helvetica">First Name *</FONT></TD></TR>
    <TR>
    <TD><INPUT TYPE="TEXT" NAME="lname">
    <FONT SIZE="-1" FACE="verdana, arial, helvetica">Last Name *</FONT></TD></TR>
    <TR>
    <TD><INPUT TYPE="TEXT" NAME="email">
    <FONT SIZE="-1" FACE="verdana, arial, helvetica">E-Mail Address *</FONT></TD></TR></TABLE>
    <TABLE BORDER="0" WIDTH="350" NOWRAP="NOWRAP">
    <TR>
    <TD><BR><FONT SIZE="-1" FACE="verdana, arial, helvetica"><B>Choose a User 
    Name</B></FONT><BR><INPUT TYPE="TEXT" NAME="username"> 
    <FONT SIZE="-1" FACE="verdana, arial, helvetica">User Name</FONT>  
    <FONT SIZE="-1" FACE="arial, helvetica"><BR><BR><B>Choose a Password</B></FONT><BR>
            
    <INPUT TYPE="password" NAME="pwd">     
    <FONT SIZE="-1" FACE="verdana, arial, helvetica">Password</FONT><BR><INPUT
    TYPE="password" NAME="pwd2"> <FONT SIZE="-1" FACE="verdana, arial, helvetica">Verify
      Password</FONT></TD></TR></TABLE><BR><BR><INPUT
    TYPE="SUBMIT" NAME="process" VALUE="Submit My Order"><INPUT
    TYPE="RESET" NAME=""></TD></TR>
    <TR>
    <TD>
    <HR SIZE="2" NOSHADE="NOSHADE"></TD></TR></TABLE></CENTER></FORM></BODY></HTML>

    b) perl script
    =========
    Code:
    #!c:\perl\bin\perl.exe 
    #!/usr/bin/perl 
    ############################################ 
    ##                                        ## 
    ##     Account Manager LITE User Signup   ## 
    ##          by SiteInteractive.com        ## 
    ##    http://siteinteractive.com/contact  ## 
    ##                                        ## 
    ##             version:  1.09             ## 
    ##       last modified:  07/24/2002       ## 
    ##        copyright (c) 1998 - 2002       ## 
    ##                                        ## 
    ##    latest version is available from    ## 
    ##        http://SiteInteractive.com      ## 
    ##                                        ## 
    ############################################ 
    # 
    # Copyright 1998 Elite Host.  All Rights Reserved. 
    # 
    # TERMS OF USE  
    # 1. Account Manager is for licensed customers 
    # only. Customer may use Account Manager as many 
    # times as customer wishes, as long as customer owns or runs the web 
    # site that Account Manager is installed on.  Account 
    # Manager may not under any circumstances be sold 
    # or redistributed without the written consent of CGI Script Center and 
    # its owner Diran Alemshah. 
    # 
    # 2. CGI Script Center, at its own discresion, will decide if any terms  
    # of the this agreement have been violated by customer. Upon written e- 
    # mailed notification to Customer of Terms of Use violations, CGI 
    # Script Center may revoke customer's license to use Account Manager. 
    # In that event, Customer agrees to any and all of the following: 
    # 
    # a) Customers found in violation of this agreement, found reselling or 
    # redistributing Account Manager, or making  
    # Customers Members Area ID and password public to anyone in any  
    # manner will forfeit their Members area password and all rights to  
    # future versions of Account Manager. 
    #  
    # b). Customer will no longer be licensed to run any version of  
    # Account Manager.  
    # 
    # Indemnification 
    # 1. Customer agrees that it shall defend, indemnify, save and hold 
    # CGI Script Center, Elite Web Design and marketing, and any 
    # persons affiliated with either company, harmless from any and all 
    # demands, liabilities, losses, costs and claims, including reasonable 
    # attorney's fees asserted against CGI Script Center, its agents, its 
    # customers, officers and employees, that may arise or result from any 
    # service provided or performed or agreed to be performed or any product 
    # sold by customer, its agents, employees or assigns. Customer agrees to 
    # defend, indemnify and hold harmless CGI Script Center, its agents, 
    # its cusomters, officers, and employes,against 
    # liabilities arising out of; a) any injury to person or property caused 
    # by an products sold or  otherwise distributed in connection with CGI 
    # Script Center products; (b) any material supplied by customer 
    # infringing or allegedly infringing on the proprietary rights of a 
    # third party; c) copyright infringement and (d) any defective products 
    # sold to customer from CGI Script Center products. 
    # 
    # This program may not be distributed in whole or part, freely, for pay,  
    # or any other form of compensation. 
    # 
    ##################################################  ############### 
    # This version designed for Win32 systems (NT).  If you require 
    # a Unix version, please contact cgi@elitehost.com 
    ##################################################  ############### 
      
      
    ##################################################  ############ 
    # EDIT USER CONFIGURATIONS BELOW 
    ##################################################  ############ 
    
    # apache is in d DRIVE!!! not C
    
    #require "d:/program files/apache software foundation/apache2.2/cgi-bin/config.pl"; 
      
    # This completes this portion of your Account Manager setup 
    ##################################################  ############ 
    # DO NOT EDIT BELOW THIS LINE 
    ##################################################  ############ 
      
    use CGI; 
    use CGI::Carp qw(fatalsToBrowser); 
    use DBD::mysql;
    use DBI;
    
    my $query = CGI->new; 
      
    unless ($CGI::VERSION >= 2.47) {  
       error('Your version of CGI.pm is too old. You must have verison 2.47 or higher to use this script.') 
    } 
     
    
    #SECTION B
    #=========================================
    #Database initialization and initial query
    my ($dbh, $data_source);  
    my $mysql_server_name   = 'localhost';  
    my $mysql_database_name = 'test';  
    my $mysql_user_name     = 'root';  
    my $mysql_password      = 'mysql1';  
    
    my $data_source = 'DBI:mysql:' . $mysql_database_name . ':' . $mysql_server_name;  
    my $dbh = DBI->connect( $data_source, $mysql_user_name, $mysql_password, {RaiseError=>1}) ||  die "$DBI::errstr";   
      
      
    
    
    #important line to pass email address from html to perl
    my $agree_field = $query->param("agree") || 'Annonymous'; 
    my $first_name = $query->param("fname") || 'Annonymous'; 
    my $last_name = $query->param("lname") || 'Annonymous'; 
    my $email_address = $query->param("email") || 'Annonymous'; 
    my $user_name = $query->param("username") || 'Annonymous'; 
    my $password = $query->param("pwd") || 'Annonymous'; 
    
    
    # End of Database initial Query
    #==========================================
    
    print $query->header(), 
          $query->start_html(-title=>'Input Successful'), 
          $query->p('Thanks for registrating your particulars with us!'), 
          $query->p("You Agree? : $agree_field:"),
          $query->p("Your First Name : $first_name"),
          $query->p("Your last Name : $last_name"), 
          $query->p("Your email address: $email_address"), 
          $query->p("Your username : $user_name"), 
          $query->p("Your Password : $password"), 
          $query->end_html; 
    
    sub error { 
       print $query->header(), 
             $query->start_html(-title=>'Error'), 
             shift, 
             $query->end_html; 
       exit(0); 
    } 
    
    
    my $sql = $dbh->prepare(qq{SELECT * FROM user_reg}); 
       $sql->execute(); 
    
    while (my @data = $sql->fetchrow_array()) { 
      
          # Print the date from the first two columns in the table 
          #print $data[0], "\t", $data[1], "<br>"; 
           print $data[0], "\t", $data[1], "\t", $data[2], "\t", $data[3], "\t", $data[4], "\t", $data[5], "<br>";  
    } 
    
    1;
    
    
     $sql = $dbh->prepare(qq{insert into user_reg(agree_field, first_name, last_name, email_address, user_name, password) values ( "$agree_field", "$first_name", "$last_name", "$email_address", "$user_name", "$password") } );  
       $sql->execute() or die "$dbh->errstr\n";;  
      
    $sql = $dbh->prepare(qq{SELECT * FROM user_reg});  
     $sql->execute(); 
      
    
    while (my @data = $sql->fetchrow_array()){  
      
          # Print the date from the first four columns in the table  
          print $data[0], "\t", $data[1], "\t", $data[2], "\t", $data[3], "\t", $data[4], "\t", $data[5], "<br>";  
    
    }
    1;
  • numberwhun
    Recognized Expert Moderator Specialist
    • May 2007
    • 3467

    #2
    As far as checking the input information, you won't be able to really prevent "junk" information, but you will instead want to check the format of what has been entered. ie: Check that the email address is in the correct format. Check that where you expected two numbers, two numbers were entered, etc. Check that fields where things were to be selected (either by check boxes, radio buttons or dropdowns), that a selection or selections were made.

    For the valid email address, you could do as many sites to and send a verification email that they need to respond to in an appropriate manner to get verified and complete registration.

    How you do it is up to you, but it all depends on how anal you want to be about your data.

    Regards,

    Jeff

    Comment

    • KevinADC
      Recognized Expert Specialist
      • Jan 2007
      • 4092

      #3
      For an email address I recommend you use the Email::Valid module. For the rest of your form fileds its hard to say, only you can define what "preventing junk registration and invalid characters" means to you and your particular requirements.

      The general method is to use regular exressions to evaluate the form field data

      Code:
      if ($data =~ /\W/) {
          $data has at least one non-word character so we consider it bad
      }
      So the first thing you do is determine what your form field data should be then you write some code that tests those assumptions. If a form field should only be digits:

      Code:
      if ($var =~ /\D/) {
         bad.. it has a non digit somewhere
      }
      if ($var =~ /^\d+$/) {
         good... digits beginning to end (this is better validation than above)
      }

      Comment

      • eWish
        Recognized Expert Contributor
        • Jul 2007
        • 973

        #4
        I would suggest that you look at CPAN for a module to help you if you are not good with regular expressions.

        FormValidator:: Simple
        Data::FormValid ator


        --Kevin

        Comment

        • happyse27
          New Member
          • Sep 2008
          • 236

          #5
          Hi Kevin,

          Thanks. Is there any reference site to show what is the details and how to call and interface to the modules you recommended.?


          Cheers...
          Andrew

          Comment

          • KevinADC
            Recognized Expert Specialist
            • Jan 2007
            • 4092

            #6
            Originally posted by happyse27
            Hi Kevin,

            Thanks. Is there any reference site to show what is the details and how to call and interface to the modules you recommended.?


            Cheers...
            Andrew
            Click on the links and read the documentation.

            Comment

            • happyse27
              New Member
              • Sep 2008
              • 236

              #7
              Originally posted by KevinADC
              Click on the links and read the documentation.
              Hi Kevin,

              Understand, I read the documentation but still dont understand it.

              Is there any step by step reference sites and any examples? Or I just cut and paste certain segment to integrate to my existing scripts. Or I just package it into a module and try to incorporate into perl package manager?

              Appreciate your kind enlightenment.


              Cheers...
              Andrew

              Comment

              • happyse27
                New Member
                • Sep 2008
                • 236

                #8
                Hi Kevin / All,

                I managed to try out email::valid package to check if the email address is valid from the directed website of your recommendation, but it seemed that the perl package manager always got this error when I tried to install the package.

                And html error gave below and the script is pasted below.

                Kindly enlighten what can be done...


                Cheers...
                Andrew

                html error
                =======
                Software error:
                Can't locate Email/Valid.pm in @INC (@INC contains: C:/perl/site/lib C:/perl/lib .) at D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/acctman2.pl line 88.
                BEGIN failed--compilation aborted at D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/acctman2.pl line 88.

                For help, please send mail to the webmaster (admin@gateway. 2wire.net), giving this error message and the time and date of the error.


                latest perl script(added use email::valid package, see last 2 lines)
                =============== =============== ======
                Code:
                #!c:\perl\bin\perl.exe 
                #!/usr/bin/perl 
                ############################################ 
                ##                                        ## 
                ##     Account Manager LITE User Signup   ## 
                ##          by SiteInteractive.com        ## 
                ##    http://siteinteractive.com/contact  ## 
                ##                                        ## 
                ##             version:  1.09             ## 
                ##       last modified:  07/24/2002       ## 
                ##        copyright (c) 1998 - 2002       ## 
                ##                                        ## 
                ##    latest version is available from    ## 
                ##        http://SiteInteractive.com      ## 
                ##                                        ## 
                ############################################ 
                # 
                # Copyright 1998 Elite Host.  All Rights Reserved. 
                # 
                # TERMS OF USE  
                # 1. Account Manager is for licensed customers 
                # only. Customer may use Account Manager as many 
                # times as customer wishes, as long as customer owns or runs the web 
                # site that Account Manager is installed on.  Account 
                # Manager may not under any circumstances be sold 
                # or redistributed without the written consent of CGI Script Center and 
                # its owner Diran Alemshah. 
                # 
                # 2. CGI Script Center, at its own discresion, will decide if any terms  
                # of the this agreement have been violated by customer. Upon written e- 
                # mailed notification to Customer of Terms of Use violations, CGI 
                # Script Center may revoke customer's license to use Account Manager. 
                # In that event, Customer agrees to any and all of the following: 
                # 
                # a) Customers found in violation of this agreement, found reselling or 
                # redistributing Account Manager, or making  
                # Customers Members Area ID and password public to anyone in any  
                # manner will forfeit their Members area password and all rights to  
                # future versions of Account Manager. 
                #  
                # b). Customer will no longer be licensed to run any version of  
                # Account Manager.  
                # 
                # Indemnification 
                # 1. Customer agrees that it shall defend, indemnify, save and hold 
                # CGI Script Center, Elite Web Design and marketing, and any 
                # persons affiliated with either company, harmless from any and all 
                # demands, liabilities, losses, costs and claims, including reasonable 
                # attorney's fees asserted against CGI Script Center, its agents, its 
                # customers, officers and employees, that may arise or result from any 
                # service provided or performed or agreed to be performed or any product 
                # sold by customer, its agents, employees or assigns. Customer agrees to 
                # defend, indemnify and hold harmless CGI Script Center, its agents, 
                # its cusomters, officers, and employes,against 
                # liabilities arising out of; a) any injury to person or property caused 
                # by an products sold or  otherwise distributed in connection with CGI 
                # Script Center products; (b) any material supplied by customer 
                # infringing or allegedly infringing on the proprietary rights of a 
                # third party; c) copyright infringement and (d) any defective products 
                # sold to customer from CGI Script Center products. 
                # 
                # This program may not be distributed in whole or part, freely, for pay,  
                # or any other form of compensation. 
                # 
                ##################################################  ############### 
                # This version designed for Win32 systems (NT).  If you require 
                # a Unix version, please contact cgi@elitehost.com 
                ##################################################  ############### 
                  
                  
                ##################################################  ############ 
                # EDIT USER CONFIGURATIONS BELOW 
                ##################################################  ############ 
                
                # apache is in d DRIVE!!! not C
                
                #require "d:/program files/apache software foundation/apache2.2/cgi-bin/config.pl"; 
                  
                # This completes this portion of your Account Manager setup 
                ##################################################  ############ 
                # DO NOT EDIT BELOW THIS LINE 
                ##################################################  ############ 
                  
                use CGI; 
                use CGI::Carp qw(fatalsToBrowser); 
                use DBD::mysql;
                use DBI;
                use Email::Valid;
                
                
                my $query = CGI->new; 
                  
                unless ($CGI::VERSION >= 2.47) {  
                   error('Your version of CGI.pm is too old. You must have verison 2.47 or higher to use this script.') 
                } 
                 
                
                #SECTION B
                #=========================================
                #Database initialization and initial query
                my ($dbh, $data_source);  
                my $mysql_server_name   = 'localhost';  
                my $mysql_database_name = 'test';  
                my $mysql_user_name     = 'root';  
                my $mysql_password      = 'mysql1';  
                
                my $data_source = 'DBI:mysql:' . $mysql_database_name . ':' . $mysql_server_name;  
                my $dbh = DBI->connect( $data_source, $mysql_user_name, $mysql_password, {RaiseError=>1}) ||  die "$DBI::errstr";   
                  
                  
                
                
                #important line to pass email address from html to perl
                my $agree_field = $query->param("agree") || 'Annonymous'; 
                my $first_name = $query->param("fname") || 'Annonymous'; 
                my $last_name = $query->param("lname") || 'Annonymous'; 
                my $email_address = $query->param("email") || 'Annonymous'; 
                my $user_name = $query->param("username") || 'Annonymous'; 
                my $password = $query->param("pwd") || 'Annonymous'; 
                
                
                # End of Database initial Query
                #==========================================
                
                print $query->header(), 
                      $query->start_html(-title=>'Input Successful'), 
                      $query->p('Thanks for registrating your particulars with us!'), 
                      $query->p("You Agree? : $agree_field:"),
                      $query->p("Your First Name : $first_name"),
                      $query->p("Your last Name : $last_name"), 
                      $query->p("Your email address: $email_address"), 
                      $query->p("Your username : $user_name"), 
                      $query->p("Your Password : $password"), 
                      $query->end_html; 
                
                sub error { 
                   print $query->header(), 
                         $query->start_html(-title=>'Error'), 
                         shift, 
                         $query->end_html; 
                   exit(0); 
                } 
                
                
                my $sql = $dbh->prepare(qq{SELECT * FROM user_reg}); 
                   $sql->execute(); 
                
                while (my @data = $sql->fetchrow_array()) { 
                  
                      # Print the date from the first two columns in the table 
                      #print $data[0], "\t", $data[1], "<br>"; 
                       print $data[0], "\t", $data[1], "\t", $data[2], "\t", $data[3], "\t", $data[4], "\t", $data[5], "<br>";  
                } 
                
                1;
                
                
                 $sql = $dbh->prepare(qq{insert into user_reg(agree_field, first_name, last_name, email_address, user_name, password) values ( "$agree_field", "$first_name", "$last_name", "$email_address", "$user_name", "$password") } );  
                   $sql->execute() or die "$dbh->errstr\n";;  
                  
                $sql = $dbh->prepare(qq{SELECT * FROM user_reg});  
                 $sql->execute(); 
                  
                
                while (my @data = $sql->fetchrow_array()){  
                  
                      # Print the date from the first four columns in the table  
                      print $data[0], "\t", $data[1], "\t", $data[2], "\t", $data[3], "\t", $data[4], "\t", $data[5], "<br>";  
                
                }
                1;
                
                #Let's see if the email_address conforms to the RFC822 specification
                print (Email::Valid->address('$email_address') ? 'yes' : 'no') "<br>";

                Comment

                • KevinADC
                  Recognized Expert Specialist
                  • Jan 2007
                  • 4092

                  #9
                  It appears the module is not succesfully installed. And if it was this line will not work:

                  Code:
                  Email::Valid->address('$email_address')
                  Don't put scalars inside of single-quotes, there is no variable interpolation inside of single-quotes. You should almost never quote a scalar unless you are making a new string, better to write it like this:

                  Code:
                  Email::Valid->address($email_address)
                  But you first need to make sure the module is in fact installed.

                  Comment

                  • numberwhun
                    Recognized Expert Moderator Specialist
                    • May 2007
                    • 3467

                    #10
                    You need to learn to understand the errors that Perl is providing to you. This error is typical of a Perl module not being found in the path that is present in the @INC array.

                    Regards,

                    Jeff

                    Comment

                    • happyse27
                      New Member
                      • Sep 2008
                      • 236

                      #11
                      Hi Gurus,

                      Thanks! I tried again and again to reinstall, the module just cant be installed. Any idea how to make sure we got the right ingredients and procedure?


                      Thanks in advance,
                      Andrew

                      Comment

                      • KevinADC
                        Recognized Expert Specialist
                        • Jan 2007
                        • 4092

                        #12
                        Originally posted by happyse27
                        Hi Gurus,

                        Thanks! I tried again and again to reinstall, the module just cant be installed. Any idea how to make sure we got the right ingredients and procedure?


                        Thanks in advance,
                        Andrew
                        I have the module installed on my Windows box. I don't know why you are having problems getting it installed.

                        Comment

                        • happyse27
                          New Member
                          • Sep 2008
                          • 236

                          #13
                          Hi Kevin,

                          It always give me


                          html error
                          =======
                          Software error:
                          Can't locate Email/Valid.pm in @INC (@INC contains: C:/perl/site/lib C:/perl/lib .) at D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/acctman2.pl line 88.
                          BEGIN failed--compilation aborted at D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/acctman2.pl line 88.

                          For help, please send mail to the webmaster (admin@gateway. 2wire.net), giving this error message and the time and date of the error.


                          and also the perl package manager will give installation message saying that the packages is not installed. And the main modules are not synchronized for the installation, do I need to reinstall the whole windows package manager or is there any option to make sure all perl package manager's packages are installed...


                          Thanks,
                          Andrew

                          Comment

                          • numberwhun
                            Recognized Expert Moderator Specialist
                            • May 2007
                            • 3467

                            #14
                            Originally posted by happyse27
                            Hi Kevin,

                            It always give me


                            html error
                            =======
                            Software error:
                            Can't locate Email/Valid.pm in @INC (@INC contains: C:/perl/site/lib C:/perl/lib .) at D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/acctman2.pl line 88.
                            BEGIN failed--compilation aborted at D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/acctman2.pl line 88.

                            For help, please send mail to the webmaster (admin@gateway. 2wire.net), giving this error message and the time and date of the error.


                            and also the perl package manager will give installation message saying that the packages is not installed. And the main modules are not synchronized for the installation, do I need to reinstall the whole windows package manager or is there any option to make sure all perl package manager's packages are installed...


                            Thanks,
                            Andrew
                            Andrew, if you read Kevins post, he already mentioned to you that that error means that the module, Email::Valid, is not installed. Before you can use a module you need to first install it.
                            Regards,

                            Jeff

                            Comment

                            • happyse27
                              New Member
                              • Sep 2008
                              • 236

                              #15
                              Hi Kevin,

                              I tried on my another laptop to let perl package manager install the email::valid package and it installed successfully and gives good message

                              Synchronizing Database ...
                              Downloading ActiveState Package Repository packlist ... done
                              Updating ActiveState Package Repository database ... done
                              Synchronizing Database done

                              At the laptop which I previously installed some modules are successful the email::valid package cant be installed and gives error message

                              Synchronizing Database ...
                              Downloading ActiveState Package Repository packlist ... not synchronized
                              Updating ActiveState Package Repository database ... not synchronized
                              Synchronizing Database done

                              Not sure if I need to reinstall everything?? Cheers...

                              Thanks and Best Rgds,
                              Andrew

                              Comment

                              Working...