Question for Webman

Discussion in 'Digital Marketing' started by StBalor, Mar 18, 2007.

  1. StBalor

    StBalor LawnSite Senior Member
    Posts: 798

    I replaced all my text with yours and now i have no form. so that did not work.
     
  2. Dirty Water

    Dirty Water LawnSite Fanatic
    Posts: 6,799

    You don't replace the HTML form with that. That will stay.

    This is the script that runs on the server that processes the form. You will need to modify a few lines of your HTML Form, but otherwise it stays.

    The lines to modify is this:

    <form method="get" action="http://www.sunvalleylawnservice.com/Estimate.htm" name="myform">

    Change that line to this:

    <form method="post" action="estimate.php" name="myform">

    The code I wrote should be put into a file called "estimate.php" and stored on your server.

    Then modify these lines:

    <select name="Basic Lawn Service">

    Take out the spaces in the name attribute:

    <select name="BasicLawnService">

    Same with this one:

    <textarea name="Other Services:" rows="4"></textarea><br><br>

    Becomes:

    <textarea name="OtherServices:" rows="4"></textarea><br><br>

    Good luck :)
     
  3. StBalor

    StBalor LawnSite Senior Member
    Posts: 798

    Well i messed with it some more and now when i submit it sends me to the success page. But i do not recieve any email.
     
  4. Dirty Water

    Dirty Water LawnSite Fanatic
    Posts: 6,799

    Did you end up using the php code I wrote?
     
  5. StBalor

    StBalor LawnSite Senior Member
    Posts: 798

    No, i do not know anything about this and you did not leave much on instructions. i just found another tutorial and tried that.
     
  6. freshfitz

    freshfitz LawnSite Member
    Posts: 5

    Tested working create a file estimate.htm and put this copy and paste this code
    PHP:
    <html>

    <
    form method="post" enctype="multipart/form-data" action="formmail.php">
    <
    input type="hidden" name="MAX_FILE_SIZE" value="1000000">
    <
    input type="hidden" name="path_to_file" value="/www/uploaded/files">
    <
    input type="hidden" name="require" value="email,phone_no">
    <
    input type="hidden" name="recipient" value="your@email.com">
    <
    input type="hidden" name="sort" value="alphabetic">
    <
    input type="hidden" name="env_report" value="REMOTE_HOST,HTTP_USER_AGENT">
    <
    table>
     <
    tr>
      <
    td>First and Last Name</td><td><input type=text name="Name"></td>
     </
    tr>
     <
    tr>
      <
    td>Your Email:</td><td><input type=text name="email"></td>
     </
    tr>
     <
    tr>
      <
    td>Street Address</td><td><input type=text name="Street_Address"></td>
     </
    tr>
     <
    tr>
      <
    td>City Of Residence</td><td><input type=text name="City"></td>
     </
    tr>
     <
    tr>
      <
    td>Zip Code:</td><td><input type=text name="Zip"></td>
     </
    tr>
     <
    tr>
      <
    td>Phone Number</td><td><input type=text name="Phone_number"></td>
     </
    tr>
     <
    tr>
      <
    td colspan="2">
        <
    p align="right">
        <
    select name="Lawn_package" size="3" multiple>
         <
    option>Basic Lawn Service</option>
         <
    option>SVLS Lawn Package</option>
         <
    option>Custom Lawn Package</option>
         <
    option>Complete Lawn Package</option>
         <
    option>Option 5</option>
        </
    select></td>
     </
    tr>
    </
    table>

    <
    table id="table1">
     <
    tr>
      <
    td>Phone Number</td><td><textarea name="Other Services:" rows="4"></textarea></td>
     </
    tr>
    </
    table>

    <
    br><input type="submit"><input type="reset"><br><hr>

    </
    form>

    </
    html>
    Create a file formmail.php and put in same directory as estimate.htm copy and paste the code below for formmail.php

    PHP:
    <?

    // for ultimate security, use this instead of using the form
    $recipient "estimate@sunvalleylawnservice.com"// youremail@domain.com

    // bcc emails (separate multiples with commas (,))
    $bcc "";

    // referers.. domains/ips that you will allow forms to
    // reside on.
    $referers = array ('sunvalleylawnservice.com','www.sunvalleylawnservice.com','127.0.0.1');

    // banned emails, these will be email addresses of people
    // who are blocked from using the script (requested)
    $banlist = array ('*@somedomain.com''user@domain.com''etc@domains.com');

    // field / value seperator
    define("SEPARATOR", ($separator)?$separator:": ");

    // content newline
    define("NEWLINE", ($newline)?$newline:"\n");

    // formmail version (for debugging mostly)
    define("VERSION""5.0");


    // our mighty error function..
    function print_error($reason,$type 0) {
       
    build_body($title$bgcolor$text_color$link_color$vlink_color$alink_color$style_sheet);
       
    // for missing required data
       
    if ($type == "missing") {
          if (
    $missing_field_redirect) {
             
    header("Location: $missing_field_redirect?error=$reason");
             exit;
          } else {
          
    ?>
          The form was not submitted for the following reasons:<p>
          <ul><?
          echo $reason."\n";
          ?></ul>
          Please use your browser's back button to return to the form and try again.<?
          }
       } else { // every other error
          ?>
          The form was not submitted because of the following reasons:<p>
          <?
       }
       echo "<br><br>\n";
      
       exit;
    }

    // function to check the banlist
    // suggested by a whole lot of people.. Thanks
    function check_banlist($banlist, $email) {
       if (count($banlist)) {
          $allow = true;
          foreach($banlist as $banned) {
             $temp = explode("@", $banned);
             if ($temp[0] == "*") {
                $temp2 = explode("@", $email);
                if (trim(strtolower($temp2[1])) == trim(strtolower($temp[1])))
                   $allow = false;
             } else {
                if (trim(strtolower($email)) == trim(strtolower($banned)))
                   $allow = false;
             }
          }
       }
       if (!$allow) {
          print_error("You are using from a <b>banned email address.</b>");
       }
    }

    // function to check the referer for security reasons.
    // contributed by some one who's name got lost.. Thanks
    // goes out to him any way.
    function check_referer($referers) {
       if (count($referers)) {
          $found = false;

          $temp = explode("/",getenv("HTTP_REFERER"));
          $referer = $temp[2];
          
          if ($referer=="") {$referer = $_SERVER['HTTP_REFERER'];
             list($remove,$stuff)=split('//',$referer,2);
             list($home,$stuff)=split('/',$stuff,2);
             $referer = $home;
          }
          
          for ($x=0; $x < count($referers); $x++) {
             if (eregi ($referers[$x], $referer)) {
                $found = true;
             }
          }
          if ($referer =="")
             $found = false;
          if (!$found){
             print_error("You are coming from an <b>unauthorized domain.</b>");
             error_log("[FormMail.php] Illegal Referer. (".getenv("HTTP_REFERER").")", 0);
          }
             return $found;
          } else {
             return true; // not a good idea, if empty, it will allow it.
       }
    }
    if ($referers)
       check_referer($referers);

    if ($banlist)
       check_banlist($banlist, $email);

    // This function takes the sorts, excludes certain keys and 
    // makes a pretty content string.
    function parse_form($array, $sort = "") {
       // build reserved keyword array
       $reserved_keys[] = "MAX_FILE_SIZE";
       $reserved_keys[] = "required";
       $reserved_keys[] = "redirect";
       $reserved_keys[] = "require";
       $reserved_keys[] = "path_to_file";
       $reserved_keys[] = "recipient";
       $reserved_keys[] = "subject";
       $reserved_keys[] = "sort";
       $reserved_keys[] = "style_sheet";
       $reserved_keys[] = "bgcolor";
       $reserved_keys[] = "text_color";
       $reserved_keys[] = "link_color";
       $reserved_keys[] = "vlink_color";
       $reserved_keys[] = "alink_color";
       $reserved_keys[] = "title";
       $reserved_keys[] = "missing_fields_redirect";
       $reserved_keys[] = "env_report";
       $reserved_keys[] = "submit";
       if (count($array)) {
          if (is_array($sort)) {
             foreach ($sort as $field) {
                $reserved_violation = 0;
                for ($ri=0; $ri<count($reserved_keys); $ri++)
                   if ($array[$field] == $reserved_keys[$ri]) $reserved_violation = 1;

                if ($reserved_violation != 1) {
                   if (is_array($array[$field])) {
                      for ($z=0;$z<count($array[$field]);$z++)
                         $content .= $field.SEPARATOR.$array[$field][$z].NEWLINE;
                   } else
                      $content .= $field.SEPARATOR.$array[$field].NEWLINE;
                }
             }
          }
          while (list($key, $val) = each($array)) {
             $reserved_violation = 0;
             for ($ri=0; $ri<count($reserved_keys); $ri++)
                if ($key == $reserved_keys[$ri]) $reserved_violation = 1;

             for ($ri=0; $ri<count($sort); $ri++)
                if ($key == $sort[$ri]) $reserved_violation = 1;

             // prepare content
             if ($reserved_violation != 1) {
                if (is_array($val)) {
                   for ($z=0;$z<count($val);$z++)
                      $content .= $key.SEPARATOR.$val[$z].NEWLINE;
                } else
                   $content .= $key.SEPARATOR.$val.NEWLINE;
             }
          }
       }
       return $content;
    }

    // mail the content we figure out in the following steps
    function mail_it($content, $subject, $email, $recipient) {
       global $attachment_chunk, $attachment_name, $attachment_type, $attachment_sent, $bcc;

       $ob = "----=_OuterBoundary_000";
       $ib = "----=_InnerBoundery_001";
       
       $headers  = "MIME-Version: 1.0\r\n"; 
       $headers .= "From: ".$email."\n"; 
       $headers .= "To: ".$recipient."\n"; 
       $headers .= "Reply-To: ".$email."\n";
       if ($bcc) $headers .= "Bcc: ".$bcc."\n"; 
       $headers .= "X-Priority: 1\n"; 
       $headers .= "X-Mailer: DT Formmail".VERSION."\n"; 
       $headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$ob."\"\n";
       
              
       $message  = "This is a multi-part message in MIME format.\n";
       $message .= "\n--".$ob."\n";
       $message .= "Content-Type: multipart/alternative;\n\tboundary=\"".$ib."\"\n\n";
       $message .= "\n--".$ib."\n";
       $message .= "Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
       $message .= "Content-Transfer-Encoding: quoted-printable\n\n";
       $message .= $content."\n\n";
       $message .= "\n--".$ib."--\n";
       if ($attachment_name && !$attachment_sent) {
          $message .= "\n--".$ob."\n";
          $message .= "Content-Type: $attachment_type;\n\tname=\"".$attachment_name."\"\n";
          $message .= "Content-Transfer-Encoding: base64\n";
          $message .= "Content-Disposition: attachment;\n\tfilename=\"".$attachment_name."\"\n\n";
          $message .= $attachment_chunk;
          $message .= "\n\n";
          $attachment_sent = 1;
       }
       $message .= "\n--".$ob."--\n";
       
       mail($recipient, $subject, $message, $headers);
    }

    // take in the body building arguments and build the body tag for page display
    function build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet) {
       if ($style_sheet)
          echo "<LINK rel=STYLESHEET href=\"$style_sheet\" Type=\"text/css\">\n";
       if ($title)
          echo "*********$title</title>\n";
       if (!$bgcolor)
          $bgcolor = "#FFFFFF";
       if (!$text_color)
          $text_color = "#000000";
       if (!$link_color)
          $link_color = "#0000FF";
       if (!$vlink_color)
          $vlink_color = "#FF0000";
       if (!$alink_color)
          $alink_color = "#000088";
       if ($background)
          $background = "background=\"$background\"";
       echo "<body bgcolor=\"$bgcolor\" text=\"$text_color\" link=\"$link_color\" vlink=\"$vlink_color\" alink=\"$alink_color\" $background>\n\n";
    }

    // check for a recipient email address and check the validity of it
    // Thanks to Bradley miller (bradmiller@accesszone.com) for pointing
    // out the need for multiple recipient checking and providing the code.
    $recipient_in = split(',',$recipient);
    for ($i=0;$i<count($recipient_in);$i++) {
       $recipient_to_test = trim($recipient_in[$i]);
       if (!eregi("^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,6}$", $recipient_to_test)) {
          print_error("<b>I NEED VALID RECIPIENT EMAIL ADDRESS ($recipient_to_test) TO CONTINUE</b>");
       }
    }

    // This is because I originally had it require but too many people
    // were used to Matt's Formmail.pl which used required instead.
    if ($required)
       $require = $required;
    // handle the required fields
    if ($require) {
       // seperate at the commas
       $require = ereg_replace( " +", "", $require);
       $required = split(",",$require);
       for ($i=0;$i<count($required);$i++) {
          $string = trim($required[$i]);
          // check if they exsist
          if((!(${$string})) || (!(${$string}))) {
             // if the missing_fields_redirect option is on: redirect them
             if ($missing_fields_redirect) {
                header ("Location: $missing_fields_redirect");
                exit;
             }
             $require;
             $missing_field_list .= "<b>Missing: $required[$i]</b><br>\n";
          }
       }
       // send error to our mighty error function
       if ($missing_field_list)
          print_error($missing_field_list,"missing");
    }

    // check the email fields for validity
    if (($email) || ($EMAIL)) {
       $email = trim($email);
       if ($EMAIL) $email = trim($EMAIL);
       if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$", $email))
          print_error("your <b>email address</b> is invalid");
       $EMAIL = $email;
    }

    // check zipcodes for validity
    if (($ZIP_CODE) || ($zip_code)) {
       $zip_code = trim($zip_code);
       if ($ZIP_CODE) $zip_code = trim($ZIP_CODE);
       if (!ereg("(^[0-9]{5})-([0-9]{4}$)", trim($zip_code)) && (!ereg("^[a-zA-Z][0-9][a-zA-Z][[:space:]][0-9][a-zA-Z][0-9]$", trim($zip_code))) && (!ereg("(^[0-9]{5})", trim($zip_code))))
          print_error("your <b>zip/postal code</b> is invalid");
    }

    // check phone for validity
    if (($PHONE_NO) || ($phone_no)) {
       $phone_no = trim($phone_no);
       if ($PHONE_NO) $phone_no = trim($PHONE_NO);
       if (!ereg("(^(.*)[0-9]{3})(.*)([0-9]{3})(.*)([0-9]{4}$)", $phone_no))
          print_error("your <b>phone number</b> is invalid");
    }

    // check phone for validity
    if (($FAX_NO) || ($fax_no)) {
       $fax_no = trim($fax_no);
       if ($FAX_NO) $fax_no = trim($FAX_NO);
       if (!ereg("(^(.*)[0-9]{3})(.*)([0-9]{3})(.*)([0-9]{4}$)", $fax_no))
          print_error("your <b>fax number</b> is invalid");
    }

    // sort alphabetic or prepare an order
    if ($sort == "alphabetic") {
       uksort($HTTP_POST_VARS, "strnatcasecmp");
    } elseif ((ereg('^order:.*,.*', $sort)) && ($list = explode(',', ereg_replace('^order:', '', $sort)))) {
       $sort = $list;
    }
       
    // prepare the content
    $content = parse_form($HTTP_POST_VARS, $sort);

    // check for an attachment if there is a file upload it
    if ($attachment_name) {
       if ($attachment_size > 0) {
          if (!$attachment_type) $attachment_type =  "application/unknown";
          $content .= "Attached File: ".$attachment_name."\n";
          $fp = fopen($attachment,  "r");
          $attachment_chunk = fread($fp, filesize($attachment));
          $attachment_chunk = base64_encode($attachment_chunk);
          $attachment_chunk = chunk_split($attachment_chunk);
       }
    }

    // check for a file if there is a file upload it
    if ($file_name) {
       if ($file_size > 0) {
          if (!ereg("/$", $path_to_file))
             $path_to_file = $path_to_file."/";
          $location = $path_to_file.$file_name;
          if (file_exists($path_to_file.$file_name))
             $location = $path_to_file.rand(1000,3000).".".$file_name;
          copy($file,$location);
          unlink($file);
          $content .= "Uploaded File: ".$location."\n";
       }
    }

    // second file (see manual for instructions on how to add more.)
    if ($file2_name) {
       if ($file_size > 0) {
          if (!ereg("/$", $path_to_file))
             $path_to_file = $path_to_file."/";
          $location = $path_to_file.$file2_name;
          if (file_exists($path_to_file.$file2_name))
             $location = $path_to_file.rand(1000,3000).".".$file2_name;
          copy($file2,$location);
          unlink($file2);
          $content .= "Uploaded File: ".$location."\n";
       }
    }

    // if the env_report option is on: get eviromental variables
    if ($env_report) {
       $env_report = ereg_replace( " +", "", $env_report);
       $env_reports = split(",",$env_report);
       $content .= "\n------ eviromental variables ------\n";
       for ($i=0;$i<count($env_reports);$i++) {
          $string = trim($env_reports[$i]);
          if ($env_reports[$i] == "REMOTE_HOST")
             $content .= "REMOTE HOST: ".$REMOTE_HOST."\n";
          if ($env_reports[$i] == "REMOTE_USER")
             $content .= "REMOTE USER: ". $REMOTE_USER."\n";
          if ($env_reports[$i] == "REMOTE_ADDR")
             $content .= "REMOTE ADDR: ". $REMOTE_ADDR."\n";
          if ($env_reports[$i] == "HTTP_USER_AGENT")
             $content .= "BROWSER: ". $HTTP_USER_AGENT."\n";
       }
    }

    // send it off
    mail_it(stripslashes($content), ($subject)?stripslashes($subject):"Form Submission", $email, $recipient);
    if (file_exists($ar_file)) {
       $fd = fopen($ar_file, "rb");
       $ar_message = fread($fd, filesize($ar_file));
       fclose($fd);
       mail_it($ar_message, ($ar_subject)?stripslashes($ar_subject):"RE: Form Submission", ($ar_from)?$ar_from:$recipient, $email);
    }

    // if the redirect option is set: redirect them
    if ($redirect) {
       header("Location: $redirect");
       exit;
    } else {
       echo "Thank you for your submission\n";
       echo "<br><br>\n";
      
       exit;
    }

    // <----------    THE END    ----------> //  

    Let me know if you need any other mod's done
     
  7. StBalor

    StBalor LawnSite Senior Member
    Posts: 798

    Freshfitz, i did as you said. but when i press submit i get did not add phone# error. So i looked at the codes a little bit and noticed you named the last block phone number also. It should have been other services. I changed that block and changed the lawn package block to a drop down menu.
    I also noticed on the formail.php you were verifying the phone# twice, i am assuming once for the block that you had the wrong name on. I deleted the second entry on the phone# verify. But i still get the error.
     
  8. StBalor

    StBalor LawnSite Senior Member
    Posts: 798

    Freshfitz, i tinkered with it some more and got it to work. I had to remove Phone_no required for it to work. However there is a few minor details i would like to address. If you could, i would like for you to tell me or show me how.
    1. the phone_no required. i would like for this to work.
    2. Redirect, i would like it to redirect to this page. confirm.html
    3. Where it says other service:, I also would like it to say "use as much detail as possible. But staying within the way the form is set up.. (stay aligned)

    Seems pretty simple but i did not want to mess anything up. If i am being to much trouble, i understand, no problem.
     
  9. Dirty Water

    Dirty Water LawnSite Fanatic
    Posts: 6,799

    StBalor. I gave you a few pointers and even created a script that would have worked for you if you had the know how to use it., and FreshFitz did some googling and found a premade form php for you, but there comes a point where you have to thank people for help before asking for more.

    Some people charge a lot of money for this kind of stuff.
     
  10. StBalor

    StBalor LawnSite Senior Member
    Posts: 798

    No problem Dirty Water. I had already told you i did not have the know how to do this and needed instructions on how to get it to work.
    But i do appreciate the help you both have given.
     

Share This Page