Log in

View Full Version : PHP Contact Form Does Not Capture Email and Name



fcuk89
08-16-2011, 01:54 AM
Hi,

Sorry for my noobness in PHP. I am still figuring out how to fix this small simple PHP contact form fix. Hope that you can teach me please.

When the form is filled up, I can't know the sender's name and email address. Hence, when I hit the reply, I don't know what is the sender's email and his name.

Many thanks in advance.

HTML Code


<table width="89%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="58" valign="top"><img src="image/contact/feed_form.png" width="109" height="42"></td>
</tr>
<tr>

<td height="254" valign="top">
<form name="form1" method="post" action="mail.php" onSubmit="return isValidEmail(this)">
<table height="78%">
<tr>
<td width="310" height="40" align="left" valign="top">
<input type="text" name="name" style="width: 290px; height: 30px; padding: 2px; border: 1px solid #c0c0c0;" placeholder="Your name" >
</td>
</tr>
<tr>
<td height="39" valign="top" align="left"> <input name="email" type="text" style="width: 290px; height: 30px; padding: 2px; border: 1px solid #c0c0c0;" placeholder="Your email" /></td>
</tr>
<tr>
<td height="110" valign="top"><textarea name="message" style="width: 290px; height: 100px; padding: 2px; border: 1px solid #c0c0c0;"></textarea></td>
</tr>
<tr>
<td height="52" align="right" valign="top"><input type="submit" style="width: 100px; height: 50px;" value="Send"/></td>
</tr>


</table>


PHP Code


<?php header("Refresh: 3;url=contact.html"); ?>
<?php $to = "xxx@gmail.com"; $name = $_REQUEST['name']; $subject = "Feedback from customer ".$name."!";
$email = $_REQUEST['mail'] ;
$message = $_REQUEST['message'] ; $headers = "From: $email"; $sent = mail($to, $subject, $message, $headers) ;
if($sent) {print "Your mail was sent successfully. <br/>You will be redirected to the contact us page in 3 seconds"; } else {print "We encountered an error sending your mail"; } ?>

JShor
08-16-2011, 02:18 AM
Nothing in your code is sending an email. Maybe there's more code that you didn't paste in?

Techykid3
08-16-2011, 03:06 AM
(sorry, i just think i might be able to say this?)

I believe you need to put the code in mail().


Sorry if I'm wrong. I just want to try and help others ;).

traq
08-16-2011, 05:49 AM
<?php
$to = "xxx@gmail.com"; $name = $_REQUEST['name']; $subject = "Feedback from customer ".$name."!";
$email = $_REQUEST['mail'] ;
$message = $_REQUEST['message'] ;
$headers = "From: $email";
$sent = mail($to, $subject, $message, $headers) ; // <-- right there
if($sent) {
print "Your mail was sent successfully. <br/>You will be redirected to the contact us page in 3 seconds";
} else {
print "We encountered an error sending your mail";
}
?>


He is using mail(), guys.

You're not sending successfully because you're looking for 'mail' when the name of the field in the form was 'email'. Use $_REQUEST['email'] and not $_REQUEST['mail'] (actually, I would avoid using $_REQUEST at all - use the $_POST superglobal, since your form is submitting via POST - but it will work either way).

JShor
08-16-2011, 02:47 PM
He is using mail(), guys.


Yeah, you're right, I completely overlooked it.

Adrian's code is correct, except you want to add in Reply-To into your header so that when you hit the 'Reply' button, it replies to the specified email.

This should work:


<?php
$to = "xxx@gmail.com"; $name = $_REQUEST['name']; $subject = "Feedback from customer ".$name."!";
$email = $_REQUEST['mail'] ;
$message = $_REQUEST['message'] ;
$headers = "From: $email\r\nReply-To: ".$email;
$sent = mail($to, $subject, $message, $headers) ; // <-- right there
if($sent) {
print "Your mail was sent successfully. <br/>You will be redirected to the contact us page in 3 seconds";
} else {
print "We encountered an error sending your mail";
}
?>

fcuk89
08-17-2011, 04:15 PM
THank you all. I have managed to resolve the problem. Appreciate all the help.