Click to See Complete Forum and Search --> : Email Form not sending


jjr0319
09-07-2005, 07:46 PM
brand new to PHP. i have this email form that actually works, but when i receive an email, the sender is "nobody". i want it to be the email address the user inputs in the form. how do i go about doing this? also, is there a way to make sure the user has filled out all the text fields before submitting?

<?php

$recipient = 'XXXX@hotmail.com';

if(isset($_POST['Name'])){
$message = '';
foreach($_POST as $k => $v){
if($k!='submit'){
$message .= "$k: ".stripslashes($v)."\n\n";
}
}

if(@mail($recipient, 'Email from '.$_SERVER['HTTP_HOST'], $message)){
$message = 'Your email has been sent. Thank you for your message.';
}else{
$message = 'Error sending the mail!';
}
}

?>

<html>
<head>
<body>
<!-- navigation and content here-->

<?php if(!isset($message)){ ?>
<h2>:: Contact</h2>
<br>Fill the form out below to contact VII Principles LLC.

<form action="http://<?php print $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; ?>" method="post" id="mailform">

<TABLE BORDER=0 class="contentcell" width="100%">


<tr>

<td ALIGN=RIGHT VALIGN=TOP><b>Name:</b></td>

<td ALIGN=LEFT colspan="5"><input name="Name" id="Name" size="50"></td>


</tr>



<tr>

<td ALIGN=RIGHT VALIGN=TOP><b>Company:</b></td>

<td ALIGN=LEFT colspan="5"><input name="Company" id="Company" size="50"></td>


</tr>



<tr>

<td ALIGN=RIGHT VALIGN=TOP><b>Address:</b></td>

<td ALIGN=LEFT colspan="5"><input name="Address" id="Address" size="50"></td>


</tr>


<tr>

<td ALIGN=RIGHT VALIGN=TOP class="text"><b>City</b></td>

<td ALIGN=LEFT><input name="City" id="City" size=25></td>

<td ALIGN=RIGHT VALIGN=TOP class="text"><b>State</b></td>

<td ALIGN=LEFT><select name="State" id="State">
<option value="" selected="selected">State</option>
<option value="AK">AK</option>
<option value="AL">AL</option>
<option value="AR">AR</option>
<option value="AZ">AZ</option>
<option value="CA">CA</option>
<option value="CO">CO</option>
<option value="CT">CT</option>
<option value="DE">DE</option>
<option value="FL">FL</option>
<option value="GA">GA</option>
<option value="HI">HI</option>
<option value="IA">IA</option>
<option value="ID">ID</option>
<option value="IL">IL</option>
<option value="IN">IN</option>
<option value="KS">KS</option>
<option value="KY">KY</option>
<option value="LA">LA</option>
<option value="MA">MA</option>
<option value="MD">MD</option>
<option value="ME">ME</option>
<option value="MI">MI</option>
<option value="MN">MN</option>
<option value="MO">MO</option>
<option value="MS">MS</option>
<option value="MT">MT</option>
<option value="NC">NC</option>
<option value="ND">ND</option>
<option value="NE">NE</option>
<option value="NH">NH</option>
<option value="NJ">NJ</option>
<option value="NM">NM</option>
<option value="NV">NV</option>
<option value="NY">NY</option>
<option value="OH">OH</option>
<option value="OK">OK</option>
<option value="OR">OR</option>
<option value="PA">PA</option>
<option value="RI">RI</option>
<option value="SC">SC</option>
<option value="SD">SD</option>
<option value="TN">TN</option>
<option value="TX">TX</option>
<option value="UT">UT</option>
<option value="VA">VA</option>
<option value="VT">VT</option>
<option value="WA">WA</option>
<option value="WI">WI</option>
<option value="WV">WV</option>
<option value="WY">WY</option>
</select>
</td>

<td ALIGN=RIGHT VALIGN=TOP class="text"><b>Zip</b></td>

<td ALIGN=LEFT><input name="Zip" id="Zip" size=5></td>

</tr>

<tr>

<td ALIGN=RIGHT VALIGN=TOP><b>Telephone:</b><br>xxx-xxx-xxxx</td>

<td ALIGN=LEFT colspan="5"><input name="Telephone" id="Telephone" SIZE="12"></td>

</tr>

<tr>

<td ALIGN=RIGHT VALIGN=TOP class="text"><b>Email address:</b></td>

<td ALIGN=LEFT colspan="5"><input name="Email" id="Email" size=40></td>

</tr>

<tr>
<td></td>
<td colspan="5" class="text">Your email address is needed so we can respond to your comments. No further use will be made of it.</td>
</tr>


<tr>

<td ALIGN=RIGHT VALIGN=TOP class="text"><b>Comments:</b></td>

<td ALIGN=LEFT colspan="5"><textarea cols="50" rows="10" name="comments" id="comments">Enter Comments Here.</textarea></td>

</tr>


</TABLE>
</center>


<table width="100%" border="0">


<tr>
<td colspan="9" align="center"><input type="submit" id="submit" value="Contact Us">&nbsp;&nbsp;&nbsp;<input type="reset" id="reset" value="Clear Form">
</td>
</tr>


</table>
</form>
<?php }else{ ?>

<br><b><?php print $message; ?></b>

<?php } ?>


thanks in advance

NogDog
09-07-2005, 09:16 PM
$from = $_POST['Email'];
$headers = "From: $from\r\nReply-To: $from";
if(@mail($recipient, 'Email from '.$_SERVER['HTTP_HOST'], $message, $headers)){

bathurst_guy
09-07-2005, 10:24 PM
Suggestion, you may want to add some form of checking to help minimise spammers using your form to send emails to others (you can actually get in trouble if this happens)

I used this simple regx that I got off the php website:
if(eregi("MIME-Version:",$name.$email.$comments)){die('Get out, spammer.');}