Jump to content


Photo

PHP Form Mail problem


  • Please log in to reply
4 replies to this topic

#1 Bavilo

Bavilo
  • Members
  • PipPip
  • Member
  • 19 posts

Posted 04 March 2006 - 03:23 AM

Hey everyone,

Have a bit of a "problem" here. I have a form which has several field such as name, address...etc. now...i have a phone number field which consists of 3 fields. phone1, phone2, phone3, for area code...etc.

I have a php script that sends me an email with whatever field i specify, but it doesn't have the option for such a phone field. So i did this

<?php
      $phone = array($_POST['phone1'], $_POST['phone2'], $_POST['phone3']);
     
// General Variables
    $check_referrer="no";
    $referring_domains="";

// Default Error and Success Page Variables
    $error_page_title="Error - Missed Fields";
    $error_page_text="Please use your browser's back button to return to the form and complete the required fields.";
      $thanks_page_title="Message Sent";
    $thanks_page_text="Thanks for your inquiry";

// options to use if hidden field "config" has a value of 0
// recipient info
    $charset[0]="iso-8859-1";
    $tomail[0]="mikew88@gmail.com";
    $cc_tomail[0]="";
    $bcc_tomail[0]="";
// Mail contents config
    $subject[0]="GHS Student Photography";
    $reply_to_field[0]="Email";
    $reply_to_name[0]="Name";
    $required_fields[0]="Name,Address,$phone,City,State,Make,Model,Year,SingleQuantity,SingleDrawerQuantity,DoubleQuantity,DoubleDrawerQuantity,Breed,Comments";
    $required_email_fields[0]="Email";
    $attachment_fields[0]="";
    $return_ip[0]="yes";
    $mail_intro[0]="GHS Student Photography";
    $mail_fields[0]="Name,Address,City,State,$phone,Email,Make,Model,Year,SingleQuantity,SingleDrawerQuantity,DoubleQuantity,DoubleDrawerQuantity,Breed,Comments";
    $mail_type[0]="text";
    $mail_priority[0]="1";

I added the upper array for each form field, so it puts em together. And in the lower section where it says $mail_fields, I added the $phone variable. But it wont send, the form tells me to fill out the "" field. yes, it just leaves the required field blank. Not sure if i can include a variable like that in that field. Any help is appreciated. btw, i previewed this code, and it replaces the "$" with "& #036;" it doesn't do that in wordpad, or notepad. Again, weird...

Mike

#2 Bavilo

Bavilo
  • Members
  • PipPip
  • Member
  • 19 posts

Posted 04 March 2006 - 03:48 AM

Is it even possible to put a variable in another variable? because the $phone doesn't seem to work...

#3 michaellunsford

michaellunsford
  • Members
  • PipPipPip
  • Advanced Member
  • 1,023 posts
  • LocationLouisiana, USA

Posted 04 March 2006 - 04:22 AM

your code looks like a bunch of variable declarations, where is the email portion?

#4 Bavilo

Bavilo
  • Members
  • PipPip
  • Member
  • 19 posts

Posted 04 March 2006 - 04:25 AM

[!--quoteo(post=351525:date=Mar 3 2006, 08:22 PM:name=michaellunsford)--][div class=\'quotetop\']QUOTE(michaellunsford @ Mar 3 2006, 08:22 PM) View Post[/div][div class=\'quotemain\'][!--quotec--]
your code looks like a bunch of variable declarations, where is the email portion?
[/quote]
Hi sorry,

I didn't post the rest because its ALOT well here it goes...:

$send_copy[0]="no";
    $send_copy_format[0]="vert_table";
    $send_copy_fields[0]="Name,Comments";
    $send_copy_attachment_fields[0]="";
    $copy_subject[0]="Subject of Copy Email";
    $copy_intro[0]="Thanks for your inquiry, the following message has been delivered.";
    $copy_from[0]="Email";
    $copy_tomail_field[0]="Email";
// Result options
    $header[0]="";
    $footer[0]="";
    $error_page[0]="";
    $thanks_page[0]="";

// options to use if hidden field "config" has a value of 1
// recipient info
    $charset[1]="";
    $tomail[1]="";
    $cc_tomail[1]="";
    $bcc_tomail[1]="";
// Mail contents config
    $subject[1]="";
    $reply_to_field[1]="";
    $reply_to_name[1]="";
    $required_fields[1]="";
    $required_email_fields[1]="";
    $attachment_fields[1]="";
    $return_ip[1]="";
    $mail_intro[1]="";
    $mail_fields[1]="";
    $mail_type[1]="";
    $mail_priority[1]="";
// Send back to sender config
    $send_copy[1]="";
    $send_copy_format[1]="";
    $send_copy_fields[1]="";
    $send_copy_attachment_fields[1]="";
    $copy_subject[1]="";
    $copy_intro[1]="";
    $copy_from[1]="";
    $copy_tomail_field[1]="";
// Result options
    $header[1]="";
    $footer[1]="";
    $error_page[1]="";
    $thanks_page[1]="";

/////////////////////////////////////////////////////////////////////////
// Don't muck around past this line unless you know what you are doing //
/////////////////////////////////////////////////////////////////////////

ob_start();
$config=$_POST["config"];
$reply_to_field=$reply_to_field[$config];
$reply_to_name=$reply_to_name[$config];
$copy_tomail_field=$copy_tomail_field[$config];

if($header[$config]!="")
    include($header[$config]);

if($_POST["submit"] || $_POST["Submit"] || $_POST["submit_x"] || $_POST["Submit_x"])
{

////////////////////////////
// begin global functions //
////////////////////////////
// get visitor IP
    function getIP()
    {
        if(getenv(HTTP_X_FORWARDED_FOR))
            $user_ip=getenv("HTTP_X_FORWARDED_FOR");
        else
            $user_ip=getenv("REMOTE_ADDR");
        return $user_ip;
    }
// get value of given key
    function parseArray($key)
    {
        $array_value=$_POST[$key];
        $count=1;
        extract($array_value);
        foreach($array_value as $part_value)
        {
            if($count > 1){$value.=", ";}
            $value.=$part_value;
            $count=$count+1;
        }
        return $value;
    }
// stripslashes and autolink url's
    function parseValue($value)
    {
        $value=preg_replace("/(http:\/\/+.[^\s]+)/i",'<a href="\\1">\\1</a>', $value);
        return $value;
    }
// html header if used
    function htmlHeader()
    {
        $htmlHeader="<html>\n<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=".$charset[$config]."\"></head>\n<body>\n<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\" width=\"600\">\n";
        return $htmlHeader;
    }
// html footer if used
    function htmlFooter()
    {
        $htmlFooter="</table>\n</body>\n</html>\n";
        return $htmlFooter;
    }
// build verticle table format
    function buildVertTable($fields, $intro, $to, $send_ip)
    {
        $message=htmlHeader();
        if($intro != "")
            $message.="<tr>\n<td align=\"left\" valign=\"top\" colspan=\"2\">".$intro."</td>\n</tr>\n";
        $fields_check=preg_split('/,/',$fields);
        $run=sizeof($fields_check);
        for($i=0;$i<$run;$i++)
        {
            $cur_key=$fields_check[$i];
            $cur_value=$_POST[$cur_key];
            if(is_array($cur_value))
            {
                $cur_value=parseArray($cur_key);
            }
            $cur_value=parseValue($cur_value);
            $message.="<tr>\n<td align=\"left\" valign=\"top\" style=\"white-space:nowrap;\"><b>".$cur_key."</b></td>\n<td align=\"left\" valign=\"top\" width=\"100%\">".nl2br($cur_value)."</td>\n</tr>\n";
        }
        if($send_ip=="yes" && $to=="recipient")
        {
            $user_ip=getIP();
            $message.="<tr>\n<td align=\"left\" valign=\"top\" style=\"white-space:nowrap;\"><b>Sender IP</b></td>\n<td align=\"left\" valign=\"top\" width=\"100%\">".$user_ip."</td>\n</tr>\n";
        }
        $message.=htmlFooter();
        return $message;
    }
// build horizontal table format
    function buildHorzTable($fields, $intro, $to, $send_ip)
    {
        $message=htmlHeader();
        $fields_check=preg_split('/,/',$fields);
        $run=sizeof($fields_check);
        if($intro != "")
            $message.="<tr>\n<td align=\"left\" valign=\"top\" colspan=\"".$run."\">".$intro."</td>\n</tr>\n";
        $message.="<tr>\n";
        for($i=0;$i<$run;$i++)
        {
            $cur_key=$fields_check[$i];
            $message.="<td align=\"left\" valign=\"top\" style=\"white-space:nowrap;\"><b>".$cur_key."</b></td>\n";
        }
        if($send_ip=="yes" && $to=="recipient")
            $message.="<td align=\"left\" valign=\"top\" style=\"white-space:nowrap;\"><b>Sender IP</b></td>\n";
        $message.="</tr>\n";
        $message.="<tr>\n";
        for($i=0;$i<$run;$i++)
        {
            $cur_key=$fields_check[$i];
            $cur_value=$_POST[$cur_key];
            if(is_array($cur_value))
            {
                $cur_value=parseArray($cur_key);
            }
            $cur_value=parseValue($cur_value);
            $message.="<td align=\"left\" valign=\"top\">".nl2br($cur_value)."</td>\n";
        }
        $message.="</tr>\n";
        $message.="<tr>\n";
        if($send_ip=="yes" && $to=="recipient")
        {
            $user_ip=getIP();
            $message.="<td align=\"left\" valign=\"top\">".$user_ip."</td>\n";
        }
        $message.="</tr>\n";
        $message.=htmlFooter();
        return $message;
    }
// build plain text format
    function buildTextTable($fields, $intro, $to, $send_ip)
    {
        $message="";
        if($intro != "")
            $message.=$intro."\n\n";
        $fields_check=preg_split('/,/',$fields);
        $run=sizeof($fields_check);
        for($i=0;$i<$run;$i++)
        {
            $cur_key=$fields_check[$i];
            $cur_value=$_POST[$cur_key];
            if(is_array($cur_value))
            {
                $cur_value=parseArray($cur_key);
            }
            $cur_value=parseValue($cur_value);
            $message.="".$cur_key.": ".$cur_value."\n\n";
        }
        if($send_ip=="yes" && $to=="recipient")
        {
            $user_ip=getIP();
            $message.="Sender IP: ".$user_ip."\n";
        }
        return $message;
    }
// get the proper build fonction
    function buildTable($format, $fields, $intro, $to, $send_ip)
    {
        if($format=="vert_table")
            $message=buildVertTable($fields, $intro, $to, $send_ip);
        else if($format=="horz_table")
            $message=buildHorzTable($fields, $intro, $to, $send_ip);
        else
            $message=buildTextTable($fields, $intro, $to, $send_ip);
        return $message;
    }
// referrer checking security option
    function checkReferer()
    {
        if($check_referrer=="yes")
        {
            $ref_check=preg_split('/,/',$referring_domains);
            $ref_run=sizeof($ref_check);
            $referer=$_SERVER['HTTP_REFERER'];
            $domain_chk="no";
            for($i=0;$i<$ref_run;$i++)
            {
                $cur_domain=$ref_check[$i];
                if(stristr($referer,$cur_domain)){$domain_chk="yes";}
            }
        }
        else
        {
            $domain_chk="yes";
        }
        return $domain_chk;
    }
// checking required fields and email fields
    function checkFields($text_fields, $email_fields, $reply_to_name, $reply_to_field)
    {
          $error_message="";
          if($reply_to_name != "" && (eregi("\r",$reply_to_name) || eregi("\n",$reply_to_name)))
            $error_message.="<li>A name or text field contains characters that are not allowed for security reasons.</li>\n";
        if($reply_to_field != "" && (eregi("\r",$reply_to_field) || eregi("\n",$reply_to_field)))
            $error_message.="<li>An email address contains characters that are not allowed for security reasons.</li>\n";

        if($text_fields != "")
        {
            $req_check=preg_split('/,/',$text_fields);
            $req_run=sizeof($req_check);
            for($i=0;$i<$req_run;$i++)
            {
                $cur_field_name=$req_check[$i];
                $cur_field=$_POST[$cur_field_name];
                if($cur_field=="")
                {
                    $error_message.="<li>You are missing the <b>".$req_check[$i]."</b> field</li>\n";
                }
            }
        }
        if($email_fields != "")
        {
            $email_check=preg_split('/,/',$email_fields);
            $email_run=sizeof($email_check);
            for($i=0;$i<$email_run;$i++)
            {
                $cur_email_name=$email_check[$i];
                $cur_email=$_POST[$cur_email_name];
                if($cur_email=="" || !eregi("^[-a-z0-9!#$%&\'*+/=?^_`{|}~]+(\.[-a-z0-9!#$%&\'*+/=?^_`{|}~]+)*@(([a-z]([-a-z0-9]*[a-z0-9]+)?){1,63}\.)+([a-z]([-a-z0-9]*[a-z0-9]+)?){2,63}$",$cur_email))
                {
                    $error_message.="<li>You are missing the <b>".$email_check[$i]."</b> field or it is not a valid email address.</li>\n";
                }
            }
        }
        return $error_message;
    }
// attachment function
    function getAttachments($attachment_fields, $message, $content_type, $border)
    {
        $att_message="This is a multi-part message in MIME format.\n\n";
        $att_message.="--{$border}\n";
        $att_message.=$content_type."\n";
        $att_message.="Content-Transfer-Encoding: 7bit\n\n";
        $att_message.=$message."\n\n";

        $att_check=preg_split('/,/',$attachment_fields);
        $att_run=sizeof($att_check);
        for($i=0;$i<$att_run;$i++)
        {
            $fileatt=$_FILES[$att_check[$i]]['tmp_name'];
            $fileatt_name=$_FILES[$att_check[$i]]['name'];
            $fileatt_type=$_FILES[$att_check[$i]]['type'];
            if (is_uploaded_file($fileatt))
            {
                $file=fopen($fileatt,'rb');
                $data=fread($file,filesize($fileatt));
                fclose($file);
                $data=chunk_split(base64_encode($data));
                $att_message.="--{$border}\n";
                $att_message.="Content-Type: {$fileatt_type}; name=\"{$fileatt_name}\"\n";
                $att_message.="Content-Disposition: attachment; filename=\"{$fileatt_name}\"\n";
                $att_message.="Content-Transfer-Encoding: base64\n\n".$data."\n\n";
            }
        }
        $att_message.="--{$border}--\n";
        return $att_message;
    }
// function to set content type
    function contentType($charset, $format)
    {
        if($format=="vert_table")
            $content_type="Content-type: text/html; charset=\"".$charset."\"\n";
        else if($format=="horz_table")
            $content_type="Content-type: text/html; charset=\"".$charset."\"\n";
        else
            $content_type="Content-type: text/plain; charset=\"".$charset."\"\n";
        return $content_type;
    }
//////////////////////////
// end global functions //
//////////////////////////

////////////////////////////////
// begin procedural scripting //
////////////////////////////////
    $domain_chk=checkReferer();
    if($domain_chk=="yes")
    {
        $error_message=checkFields($required_fields[$config], $required_email_fields[$config], $reply_to_name[$config], $reply_to_field[$config]);
        if($error_message=="")
        {
// build appropriate message format for recipient
            $content_type=contentType($charset[$config], $mail_type[$config]);
            $message=buildTable($mail_type[$config], $mail_fields[$config], $mail_intro[$config], "recipient", $return_ip[$config]);
// build header data for recipient message
            if($_POST[$reply_to_name]!="")
                $extra="From: ".$_POST[$reply_to_name]." <".$_POST[$reply_to_field].">\n";
            else
                $extra="From: ".$_POST[$reply_to_field]."\n";
            if($cc_tomail[$config]!="")
                $extra.="Cc: ".$cc_tomail[$config]."\n";
            if($bcc_tomail[$config]!="")
                $extra.="Bcc: ".$bcc_tomail[$config]."\n";
            $extra.="X-Priority: ".$mail_priority[$config]."\n";
// get attachments if necessary
            if($attachment_fields[$config]!="")
            {
                $semi_rand=md5(time());
                $border="==Multipart_Boundary_x{$semi_rand}x";
                $extra.="MIME-Version: 1.0\n";
                $extra.="Content-Type: multipart/mixed; boundary=\"{$border}\"";
                $message=getAttachments($attachment_fields[$config], $message, $content_type, $border);
            }
            else
            {
                $extra.="MIME-Version: 1.0\n".$content_type;
            }
// send recipient email
            mail("".$tomail[$config]."", "".stripslashes($subject[$config])."", "".stripslashes($message)."", "$extra");
// autoresponse email if necessary
            if($send_copy[$config]=="yes")
            {
// build appropriate message format for autoresponse
                $content_type=contentType($charset[$config], $send_copy_format[$config]);
                $message=buildTable($send_copy_format[$config], $send_copy_fields[$config], $copy_intro[$config], "autoresponder", $return_ip[$config]);
// build header data for autoresponse
                $copy_tomail=$_POST[$copy_tomail_field];
                $copy_extra="From: ".$copy_from[$config]."\n";
// get autoresponse  attachments if necessary
                if($send_copy_attachment_fields[$config]!="")
                {
                    $semi_rand=md5(time());
                    $border="==Multipart_Boundary_x{$semi_rand}x";
                    $copy_extra.="MIME-Version: 1.0\n";
                    $copy_extra.="Content-Type: multipart/mixed; boundary=\"{$border}\"";
                    $message=getAttachments($send_copy_attachment_fields[$config], $message, $content_type, $border);
                }
                else
                {
                    $copy_extra.="MIME-Version: 1.0\n".$content_type;
                }
// send autoresponse email
                mail("$copy_tomail", "".$copy_subject[$config]."", "$message", "$copy_extra");
            }
// showing thanks pages from a successful submission
            if($thanks_page[$config]=="")
            {
                echo "<p>$thanks_page_title</p>\n";
                echo "<p>$thanks_page_text</p>\n";
            }
            else
            {
                header("Location: ".$thanks_page[$config]);
            }
        }
        else
        {
// entering error page options from missing required fields
            if($error_page[$config]=="")
            {
                echo "<p>$error_page_title</p>\n";
                echo "<ul>\n";
                echo $error_message;
                echo "</ul>\n";
                echo "<p>$error_page_text</p>\n";
                        echo "</ul>\n";
                  }
            else
            {
                header("Location: ".$error_page[$config]);
            }
        }
    }
    else
    {
// message if unauthorized domain trigger from referer checking option
        echo "<p>Sorry, mailing request came from an unauthorized domain.</p>\n";
    }
//////////////////////////////
// end procedural scripting //
//////////////////////////////

}
else
{
    echo "<p>Error</p>";
    echo "<p>No form data has been sent to the script</p>\n";
}
if($footer[$config]!="")
    include($footer[$config]);
ob_end_flush();
?>


#5 michaellunsford

michaellunsford
  • Members
  • PipPipPip
  • Advanced Member
  • 1,023 posts
  • LocationLouisiana, USA

Posted 04 March 2006 - 04:42 AM

This is a prewritten script. okay.

without pouring over someone elses prewritten code for twenty minutes, here's what I would suggest you "try" first.


$phone = $_POST['phone1']."-".$_POST['phone2']."-".$_POST['phone3'];

that converts the phone number to a string like xxx-xxx-xxxx

apparently your script isn't looking for a variable called $phone -- so you have to figure out what variable it is looking for and insert it there.


better solution. write you own mail script.





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users