tags:

views:

65

answers:

2

This is a followup to a question I posted yesterday. I thought everything was working fine, but today, I am not getting any results in the email from the drop down field.

Here is the form code in question:

<form method="post" action="contact.php" name="contactform" id="contactform">

        <fieldset>

        <legend>Please fill in the following form to contact us</legend>

        <label for="name"><span class="required">*</span> Your Name</label>
        <input name="name" type="text" id="name" size="30" value="" /> 

        <br />

        <label for="company">Company</label>
        <input name="company" type="text" id="company" size="30" value="" /> 

        <br />

        <label for="email"><span class="required">*</span> Email</label>
        <input name="email" type="text" id="email" size="30" value="" />

        <br />
        <label for="phone"><span class="required">*</span> Phone</label>
        <input name="phone" type="text" id="phone" size="30" value="" />

        <br />
        <label for="purpose"><span class="required">*</span> Purpose</label>
        <select name="purpose" id="purpose"  style="width: 300px; height:35px;">
            <option value="none selected" selected="selected">-- Select One --</option>
            <option value="I am interested in your services">I am interested in your services!</option>
            <option value="I am interested in a partnership">I am interested in a partnership!</option>
    <option value="I am interested in a job">I am interested in a job!</option>
        </select>

        <br />
        <label for=comments><span class="required">*</span> Comments</label>
        <textarea name="comments" cols="40" rows="3"  id="comments" style="width: 350px;"></textarea>

        <p><span class="required">*</span> Please help us control spam.</p>

        <label for=verify accesskey=V>&nbsp;&nbsp;&nbsp;3 + 1 =</label>
        <input name="verify" type="text" id="verify" size="4" value="" style="width: 30px;" /><br /><br />

        <input type="submit" class="submit" id="submit" value="Submit" />

        </fieldset>

        </form>

It is then processed in PHP and should output the selected option to an email, however the Reason for Contact line always comes through with nothing in it.

Here is the PHP code:

<?php

if(!$_POST) exit;

    $name           = $_POST['name'];
    $company        = $_POST['company'];
    $email          = $_POST['email'];
    $phone          = $_POST['phone'];
    $purpose        = $_POST['purpose'];
    $comments   = $_POST['comments'];
    $verify         = $_POST['verify'];

    if(trim($name) == '') {
        echo '<div class="error_message">Attention! You must enter your name.</div>';
        exit(); 
    } else if(trim($email) == '') {
        echo '<div class="error_message">Attention! Please enter a valid email address.</div>';
        exit();
    } else if(trim($phone) == '') {
        echo '<div class="error_message">Attention! Please enter a valid phone number.</div>';
        exit();
    } else if(!isEmail($email)) {
        echo '<div class="error_message">Attention! You have enter an invalid e-mail address, try again.</div>';
        exit();
    }

    if(trim($comments) == '') {
        echo '<div class="error_message">Attention! Please enter your message.</div>';
        exit();
    } else if(trim($verify) == '') {
        echo '<div class="error_message">Attention! Please enter the verification number.</div>';
        exit();
    } else if(trim($verify) != '4') {
        echo '<div class="error_message">Attention! The verification number you entered is incorrect.</div>';
        exit();  
    }

    if($error == '') {

        if(get_magic_quotes_gpc()) {
            $comments = stripslashes($comments);
        }


     // Configuration option.
     // Enter the email address that you want to emails to be sent to.
     // Example $address = "[email protected]";

     $address = "[email protected]";




     // Configuration option.
     // i.e. The standard subject will appear as, "You've been contacted by John Doe."

     // Example, $e_subject = '$name . ' has contacted you via Your Website.';

     $e_subject = 'You\'ve been contacted by ' . $name . '.';


     // Configuration option.
     // You can change this if you feel that you need to.
     // Developers, you may wish to add more fields to the form, in which case you must be sure to add them here.

     $e_body = "You have been contacted by $name.\r\n\n";
     $e_company = "Company: $company\r\n\n";
     $e_content = "Comments: \"$comments\"\r\n\n";
     $e_purpose = "Reason for contact: $purpose\r\n\n";

     $e_reply = "You can contact $name via email, $email or via phone $phone";

     $msg = $e_body . $e_content . $e_company . $e_purpose . $e_reply;

     if(mail($address, $e_subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")) {


     // Email has sent successfully, echo a success page.

     echo "<fieldset>";         
     echo "<div id='success_page'>";
     echo "<h1>Email Sent Successfully.</h1>";
     echo "<p>Thank you <strong>$name</strong>, your message has been submitted to us.</p>";
     echo "</div>";
     echo "</fieldset>";

     } else {

     echo 'ERROR!';

     }

}

function isEmail($email) { // Email address verification, do not edit.

return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));

}
?>

Any assistance would be greatly appreciated. Thanks!

A: 

Did you check if the server is able to send emails?

Check if sendmail actually works on your server before trying to debug your code (that seems to be good).

Giovanni Di Milia
I actually get the emails. The problem is that it doesn't deliver the value selected under Purpose.
fmz
It simply says Purpose:The rest is blank.
fmz
+2  A: 

It really looks like it should work, so I'd verify the dumbly obvious stuff: is your <select> tag contained within the <form> tag? Is 'purpose' mis-typed somewhere (it all looks good here, from what I can see)?

What happens if you do print_r($_POST)? What happens if you do var_dump($purpose) after it is initialized?

keithjgrant
Interesting question. I did the print_r($_POST) and it shows that purpose is somehow associated with subject: [subject] => I am interested in your services
fmz
And [purpose] is not set? Interesting. Something must be hijacking your $_POST array. Does the form post directly to your php file, or is your file included from another script?
keithjgrant
I have two files: contact_us.html and it connects with contact.php
fmz
I edited the entry to show the full text of the form.
fmz
Turns out there was a javascript file that we interfering with the names of the fields. I got that corrected and everything is working right now. This post was the most helpful in answering the question.Thanks.
fmz