Jump to content

Archived

This topic is now archived and is closed to further replies.

Bavilo

PHP Form Mail problem

Recommended Posts

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

[code]
<?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";
[/code]

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

Share this post


Link to post
Share on other sites
Is it even possible to put a variable in another variable? because the $phone doesn't seem to work...

Share this post


Link to post
Share on other sites
[!--quoteo(post=351525:date=Mar 3 2006, 08:22 PM:name=michaellunsford)--][div class=\'quotetop\']QUOTE(michaellunsford @ Mar 3 2006, 08:22 PM) [snapback]351525[/snapback][/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...:

[code]$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();
?>
[/code]

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.