I am having some trouble with a PHP contact form, when submitted this form returns only
phone number: and also enquiry: undefined . It should return Name, Phone Number and my Enquiry. Any idea why its not returning name and why Enquiry is undefined?
MY PHP
$name=$_POST['name'];
$phone=$_POST['phone'];
$enquiry=$_POST['enquiry'];
$subject="NINJA2k - EMAIL INQUIRY FROM: $name";
$message="
Phone:<br>
<strong>$phone</strong><br>
<br>
Enquiry:<br>
<strong>$enquiry</strong><br>
<br>
";
mysql_close();
include("class.phpmailer.php");
include("class.smtp.php");
$mail = new PHPMailer();
$mail->IsSMTP();// send via SMTP
$mail->Host = "localhost"; // SMTP servers
$mail->SMTPAuth = false; // turn on/off SMTP authentication
$mail->From = "user1@mydomain.com";
$mail->FromName = "http://mail.mydomain.com/";
$mail->AddAddress("user1@mydomain.com");
$mail->AddReplyTo("user1@mydomain.com");
$mail->WordWrap = 50;// set word wrap
//now Attach all files submitted
$mail->Body = $message;
//
$mail->IsHTML(true);// send as HTML
$mail->Subject = $subject;
if($mail->Send())
{
echo "Thank You <b>$name</b><br>Your email has been sent.";
}
else
{
echo "There was a problem sending the mail. Please check that you filled in the form correctly.";
}
?>
$('.contact_form').dialog({
width:500,
height:450,
modal:true,
buttons: {
"Send": function() {
if(($("#ct_name").val()=="") || ($("#ct_phone").val()=="") || ($("#ct_enquiry").val()=="") || ($("#ct_captcha").val()==""))
alert("You must fill all the field");
else
{
var capt=$(div_list[ind]).attr("id");
if(capt!=$("#ct_captcha").val().toLowerCase())
alert("Captcha Code is Invalid!");
else
{
var send_string;
send_string="name=";
send_string+=$("#ct_name").val();
send_string+="&phone=";
send_string+=$("#ct_phone").val();
send_string+="&enquiry=";
send_string+=$("#ct_enquiry").val();
$.ajax({
type: "POST",
url: "send_mail.php",
data: send_string,
async: false,
success: function(msg){
alert("Your mail was sent successfully!");
} ,
error: function(msg){
alert("Sorry! We couldn't send email");
}
});
}
}
}
}
});
MY HTML
<div class="contact_form" title="Dialog Title" style="display:none">
<table width="100%" style="padding:30px">
<tr><td>Name</td><td><input type="text" id="ct_name"/></td></tr>
<tr><td>Phone Number</td><td><input type="text" id="ct_phone"/></td></tr>
<tr><td>Enquiry Data</td><td><textarea rows="4"></textarea></td></tr>
<tr>
<td>Captcha</td>
<td>
<div>
<div class="captcha" id="28ivw"><img src="images/captcha1.png" /></div>
<div class="captcha" id="k4ez"><img src="images/captcha2.png" /></div>
<div class="captcha" id="jw62k"><img src="images/captcha3.png" /></div>
<div class="captcha" id="fh2de"><img src="images/captcha4.png" /></div>
<div class="captcha" id="gwprp"><img src="images/captcha5.png" /></div>
<div class="captcha" id="4d7ys"><img src="images/captcha6.png" /></div>
<div class="captcha" id="e5hb"><img src="images/captcha7.png" /></div>
<div class="captcha" id="xmqki"><img src="images/captcha8.png" /></div>
<div class="captcha" id="6ne3"><img src="images/captcha9.png" /></div>
<div class="captcha" id="xdhyn"><img src="images/captcha10.png" /></div>
<div class="captcha" id="q98p"><img src="images/captcha11.png" /></div>
<div class="captcha" id="hrai"><img src="images/captcha12.png" /></div>
</div>
<input type="text" style="margin-top:15px" id="ct_captcha"/>
</td>
</tr>
</table>
</div>
You need to use
nameattribute in your HTML to be able to reach the value. So instead ofyou should have
EDIT
The “trick” is that
namevalue is used as input’s key in$_POSTarray. But if you at the same work with i.e. jQuery, then you may still needidorclassas it’s easier to reach the input using them in DOM than using name.