此联系表格让我发疯!一切都有效,除了我在电子邮件中收到的一些变量,但我收到它们为“未定义”。我在屏幕上没有收到任何错误。 我正在使用php和javascript进行验证。
<?php
session_start();
ob_start();
$to_email = "";
$from_fullname = "";
$from_email = "";
$phone_number = "";
$email_subject = "";
$mois = "";
$jour = "";
$annee = "";
$check_box_values = "";
$rue = "";
$adresse2 = "";
$ville = "";
$province = "";
$varcountry = "";
$codepostal = "";
$varhouse = "";
$email_message = "";
$security_code = "";
$vpb_message_body = "";
$headers = "";
if(isset($_POST["submitted"]) && !empty($_POST["submitted"]) && $_POST["submitted"] == 1)
{
global $to_email,$from_fullname,$from_email,$mois,$jour,$annee,$check_box_values,$rue,$adresse2,$ville,$province,$varcountry,$codepostal,$varhouse,$phone_number,$email_message,$email_subject,$security_code,$vpb_message_body,$headers;
//Read POST request params into global vars
$to_email = "myemail@gmail.com"; // Replace this email field with your email address or your company email address
$from_fullname = trim(strip_tags($_POST['fullname']));
$from_email = trim(strip_tags($_POST['email']));
$phone_number = trim(strip_tags($_POST['phone']));
$email_message = trim(strip_tags($_POST['message']));
$security_code = trim(strip_tags($_POST['vpb_captcha_code']));
$mois = trim(strip_tags($_POST['mois']));
$jour = trim(strip_tags($_POST['jour']));
$annee = trim(strip_tags($_POST['annee']));
$check_box_values = utf8_encode("");
if(isset($_POST['time'])){
foreach($_POST['time'] as $value){
$check_box_values .= $value;
$check_box_values .= ', ';
}
}
$rue = trim(strip_tags($_POST['road']));
$adresse2 = trim(strip_tags($_POST['adresse2']));
$ville = trim(strip_tags($_POST['ville']));
$province = trim(strip_tags($_POST['province']));
if(isset($_POST['pays']) )
{
$varcountry = $_POST['pays'];
}
$codepostal = trim(strip_tags($_POST['postal']));
if(isset($_POST['maison']) )
{
$varhouse = $_POST['maison'];
}
$vpb_message_body = nl2br("Cher Admin,\n
L'utilisateur dont le détail est indiqué ci-dessous a envoyé ce message de ".$_SERVER['HTTP_HOST']." daté ".date('d-m-Y').".\n
Nom: ".$from_fullname."\n
Courriel: ".$from_email."\n
Numéro Téléphone: ".$phone_number."\n
Date d’inspection désirée: ".$mois." ".$jour." ".$annee."\n
Temps préféré pour être contacté: ".$check_box_values."\n
Adresse de la propriété: ".$rue." ".$adresse2." ".$ville." ".$province." ".$varcountry." ".$codepostal."\n
Type de propriété: ".$varhouse."\n
Message: ".$email_message."\n
Merci!\n\n");
//Set up the email headers
$headers = "From: $from_fullname <$from_email>\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "Message-ID: <".time().rand(1,1000)."@".$_SERVER['SERVER_NAME'].">". "\r\n";
//More validation for the input fields
if($from_fullname == "")
{
echo '<br clear="all"><div class="vpb_info" align="left">S'il vous plaît, entrez votre nom complet dans le champ requis de procéder. Merci.</div>';
}
elseif($from_email == "")
{
echo '<br clear="all"><div class="vpb_info" align="left">S'il vous plaît, entrez votre courriel dans le champ courriel requis de procéder. Merci.</div>';
}
elseif(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $from_email))
{
echo '<br clear="all"><div class="vpb_info" align="left">Désolé, votre courriel n'est pas valide. S'il vous plaît entrer un courriel valide pour continuer. Merci.</div>';
}
elseif($phone_number == "")
{
echo '<br clear="all"><div class="vpb_info" align="left">S'il vous plaît, entrez votre numéro de téléphone dans le champ requis de procéder. Merci.</div>';
}
elseif($mois == "")
{
echo '<br clear="all"><div class="vpb_info" align="left">S'il vous plaît, entrez votre MOIS dans le champ requis de procéder. Merci.</div>';
}
elseif($email_message == "")
{
echo '<br clear="all"><div class="vpb_info" align="left">S'il vous plaît, entrez votre message dans le champ de message requis de procéder. Merci.</div>';
}
elseif($security_code == "")
{
echo '<br clear="all"><div class="vpb_info" align="left">S'il vous plaît entrez le code de sécurité dans son champ pour nous envoyer votre message. Merci.</div>';
}
elseif(!isset($_SESSION['vpb_captcha_code']))
{
echo '<br clear="all"><div class="vpb_info" align="left">Désolé, aucune session appropriée a été créé pour le code de sécurité à suivre. S'il vous plaît rafraîchir la page et essayez à nouveau. Merci.</div>';
}
else
{
if(empty($_SESSION['vpb_captcha_code']) || strcasecmp($_SESSION['vpb_captcha_code'], $_POST['vpb_captcha_code']) != 0)
{
//Note: the captcha code is compared case insensitively. If you want case sensitive match, update the check above to strcmp()
echo '<br clear="all"><div class="vpb_info" align="left">Désolé, le code de sécurité que vous avez fournie est incorrecte, s'il vous plaît essayer à nouveau. Merci.</div>';
}
else
{
if(@mail($to_email, $email_subject, $vpb_message_body, $headers))
{
//Displays the success message when email message is sent
echo "<br clear='all'><div align='left' class='vpb_success'>Félicitations ".$from_fullname.", votre message a été envoyé avec succès!<br>Nous vous répondrons dès que possible. Merci.</div>";
}
else
{
//Displays an error message when email sending fails
echo "<br clear='all'><div align='left' class='vpb_info'>Désolé, votre message n'a pas pu être envoyé pour le moment.<br>S'il vous plaît essayer de nouveau ou contacter l'administrateur de site Web et signaler ce message d'erreur si le problème persiste. Merci.</div>";
}
}
}
}
?>
HTML
<div class="contact-form" style="width:65%;">
<!-- Code Begins Here -->
<h3>S'il vous plaît remplir le formulaire ci-dessous pour nous rejoindre ...</h3>
<span><label>Nom et prénom:</span></label>
<span><input type="text" id="fullname" name="fullname"></span>
<span><label>Courriel:</span></label>
<span><input type="text" id="email" name="email"></span>
<span><label>Numéro Téléphone:</span></label>
<span><input type="text" id="phone" name="phone" value=""></span>
<span><label>Date d’inspection désirée</span></label>
<span><ul>
<li id="li_4" >
<span style="width:15%; float:left;">
<input id="element_4_1" id="mois" name="mois" class="element text" size="2" maxlength="2" type="text">
<label for="element_4_1">MM</label>
</span>
<span style="width:22%; float:left;">
<input id="element_4_2" id="jour" name="jour" class="element text" size="2" maxlength="2" type="text">
<label for="element_4_2">JJ</label>
</span>
<span style="width:18%; float:left;">
<input id="element_4_3" id="annee" name="annee" class="element text" size="4" maxlength="4" type="text">
<label for="element_4_3">AAAA</label>
</span>
<span id="calendar_4">
<img id="cal_img_4" class="datepicker" src="../web/calendar.gif" alt="Choisir une date.">
</span>
<script type="text/javascript">
Calendar.setup({
inputField : "element_4_3",
baseField : "element_4",
displayArea : "calendar_4",
button : "cal_img_4",
ifFormat : "%B %e, %Y",
onSelect : selectDate
});
</script>
</li>
</ul></span>
<br clear="all">
<span><label>SELECTIONNEZ LES HEURES AUXQUELLES VOUS SOUHAITEZ ÊTRE CONTACTÉ </span></label>
<span style="width:10%; float:left;">
<input name="time[]" class="element checkbox" type="checkbox" value="Matin" />
<label class="choice" for="element_8_1">Matin</label>
</span>
<span style="width:15%; float:left;">
<input ame="time[]" class="element checkbox" type="checkbox" value="Après-Midi" />
<label class="choice" for="element_8_2">Après-Midi</label>
</span>
<span style="width:10%; float:left;">
<input name="time[]" class="element checkbox" type="checkbox" value="Soirée" />
<label class="choice" for="element_8_3">Soirée</label>
</span>
<br clear="all">
<span><label>Adresse de la propriété </label></span>
<div>
<input id="element_5_1" name="road" class="element text large" value="" type="text">
<span><label>Rue</label></span>
</div>
<div>
<input id="element_5_2" name="adresse2" class="element text large" value="" type="text">
<span><label>Adresse Ligne 2</label></span>
</div>
<div class="left">
<input id="element_5_3" name="ville" class="element text medium" value="" type="text">
<span><label>Ville</label></span>
</div>
<div class="right">
<input id="element_5_4" name="province" class="element text medium" value="" type="text">
<span><label>État / Province / Région</label></span>
</div>
<div class="left" style="width:30%; float:left;">
<input id="element_5_5" name="postal" class="element text medium" maxlength="15" value="" type="text">
<span><label>Code Postal / Zip Code</label></span>
</div>
<div class="left" style="width:50%; float:left; margin-left:20px;">
<span><select class="element select medium" id="element_5_6" name="pays" style="height:38px;">
<option value="" selected="selected"></option>
<option value="Canada" >Canada</option>
<option value="United States" >États-Unis</option>
</select></span>
<span><label>Pays</label></span>
</div>
<br clear="all">
<span><label>Type de Propriété </label></span>
<span><select class="element select medium" id="element_9" name="maison">
<option value="" selected="selected"></option>
<option value="Bungalow" >Bungalow</option>
<option value="Condo" >Condo</option>
<option value="Duplex" >Duplex</option>
<option value="Triplex" >Triplex</option>
<option value="Autre" >Autre</option>
</select></span>
<span><label>Message</label></span>
<span><textarea id="message" name="message" class="vpb_input_fields"></textarea><br clear="all"><br clear="all">
<div class="vpb_captcha_wrapper"><img src="vasplusCaptcha.php?rand=<?php echo rand(); ?>" id='captchaimg' ></div><br clear="all">
<span>Vous ne pouvez pas lire le code de sécurité ci-dessus? <a class="ccc" href="javascript:void(0);" onClick="vpb_refresh_aptcha();">Actualiser</a></span>
<span><label>Code de sécurité</label></span>
<span><input type="text" id="vpb_captcha_code" name="vpb_captcha_code" style="border-bottom: solid 2px #cbcbcb;" class="vpb_input_fields"></span><br clear="all">
<span class="vpb_general_button" onclick="vpb_submit_form();" style="color:#FFFFFF;">Envoyer</span>
</div>
<br clear="all">
<div id="response_brought"></div><!-- This will display the response from the server -->
</div>
</center>
</div>
JAVASCRIPT(我认为问题出在这里,但我不知道它是什么)
//This function refreshes the security or captcha code when you click on the refresh link at the form
function vpb_refresh_aptcha()
{
return document.getElementById("vpb_captcha_code").value="",document.getElementById("vpb_captcha_code").focus(),document.images['captchaimg'].src = document.images['captchaimg'].src.substring(0,document.images['captchaimg'].src.lastIndexOf("?"))+"?rand="+Math.random()*1000;
}
//This is the JS function that sends the mail - It is called when you click on the submit button which is in the form
function vpb_submit_form()
{
//Variable declaration and assignment
var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
var fullname = $("#fullname").val();
var email = $("#email").val();
var phone = $("#phone").val();
var subject = $("#subject").val();
var mois = $("#mois").val();
var jour = $("#jour").val();
var annee = $("#annee").val();
var message = $("#message").val();
var vpb_captcha_code = $("#vpb_captcha_code").val();
if( fullname == "" ) //Validation against empty field for fullname
{
$("#response_brought").html('<br clear="all"><div class="vpb_info" align="left">S'il vous plaît, entrez votre nom complet dans le champ requis de procéder. Merci.</div>');
$("#fullname").focus();
}
else if( email == "" ) //Validation against empty field for email address
{
$("#response_brought").html('<br clear="all"><div class="vpb_info" align="left">S'il vous plaît, entrez votre courriel dans le champ courriel requis de procéder. Merci.</div>');
$("#email").focus();
}
else if(reg.test(email) == false) //Validation for working email address
{
$("#response_brought").html('<br clear="all"><div class="vpb_info" align="left">Désolé, votre courriel n'est pas valide. S'il vous plaît entrer un courriel valide pour continuer. Merci.</div>');
$("#email").focus();
}
else if( phone == "" ) //Validation against empty field for telephone number
{
$("#response_brought").html('<br clear="all"><div class="vpb_info" align="left">S'il vous plaît, entrez votre numéro de téléphone dans le champ requis de procéder. Merci.</div>');
$("#phone").focus();
}
else if( subject == "" ) //Validation against empty field for email subject
{
$("#response_brought").html('<br clear="all"><div class="vpb_info" align="left">S'il vous plaît entrez l'objet de votre message dans le champ requis de procéder. Merci.</div>');
$("#subject").focus();
}
else if( mois == "" ) //Validation against empty field for month
{
$("#response_brought").html('<br clear="all"><div class="vpb_info" align="left">S'il vous plaît entrez l'objet de votre mois dans le champ requis de procéder. Merci.</div>');
$("#mois").focus();
}
else if( message == "" ) //Validation against empty field for email message
{
$("#response_brought").html('<br clear="all"><div class="vpb_info" align="left">S'il vous plaît, entrez votre message dans le champ de message requis de procéder. Merci.</div>');
$("#message").focus();
}
else if( vpb_captcha_code == "" ) //Validation against empty field for security captcha code
{
$("#response_brought").html('<br clear="all"><div class="vpb_info" align="left">S'il vous plaît entrez le code de sécurité dans son champ pour nous envoyer votre message. Merci.</div>');
$("#vpb_captcha_code").focus();
}
else
{
var dataString = 'fullname=' + fullname + '&email=' + email + '&phone=' + phone + '&mois=' + mois + '&jour=' + jour + '&annee=' + annee + '&subject=' + subject + '&message=' + message + '&vpb_captcha_code=' + vpb_captcha_code + '&submitted=1';
$.ajax({
type: "POST",
url: "vpb_contact_form.php",
data: dataString,
beforeSend: function()
{
//Show loading image
$("#response_brought").html('<br clear="all"><div align="left" style=" padding-top:6px; margin-left:100px; margin-top:15px;"><font style="font-family:Verdana, Geneva, sans-serif; font-size:12px; color:black;">S'il vous plaît attendre</font> <img src="images/loading.gif" alt="chargement en cours...." align="absmiddle" title="chargement en cours...."/></div>');
},
success: function(response)
{
//Check to see if the message is sent or not
var response_brought = response.indexOf('félicitations');
if( response_brought != -1 )
{
//Clear all form fields on success
$("#fullname").val('');
$("#email").val('');
$("#phone").val('');
$("#subject").val('');
$("#mois").val('');
$("#jour").val('');
$("#annee").val('');
$("#message").val('');
$("#vpb_captcha_code").val('');
//Display success message if the message is sent
$("#response_brought").html(response);
//Remove the success message also after a while of displaying the message to the user
setTimeout(function() {
$("#response_brought").html('');
},10000);
}
else
{
//Display error message is the message is not sent
$("#response_brought").html(response);
}
}
});
}
}
电子邮件输出看起来像这样:
Cher Admin,
L'utilisateur dontledétailestindiquéci-dessous anenvoyécemessage de 10.1.2.31daté25-02-2014。
Nom:水晶
Courriel:TEST@gmail.com
NuméroTéléphone:555-555-5555
日期检查désirée:undefined undefined undefined
Tempspréférépourêtrecontacté:
Adresse delapropriété:
Typedepropriété:
消息:dknlsnf
的Merci!
undefined是$ mois $ jour $ annee
有什么想法吗?谢谢大家:)
答案 0 :(得分:2)
<span style="width:15%; float:left;">
<input id="element_4_1" id="mois" name="mois" class="element text" size="2" maxlength="2" type="text">
<label for="element_4_1">MM</label>
</span>
<span style="width:22%; float:left;">
<input id="element_4_2" id="jour" name="jour" class="element text" size="2" maxlength="2" type="text">
<label for="element_4_2">JJ</label>
</span>
<span style="width:18%; float:left;">
<input id="element_4_3" id="annee" name="annee" class="element text" size="4" maxlength="4" type="text">
<label for="element_4_3">AAAA</label>
</span>
输入元素有双id =&#34;&#34;属性。如果你解决了这个问题,可能会有用。
答案 1 :(得分:1)
萨吕!
在你的变量中:
var dataString = 'fullname=' + fullname + '&email=' + email + '&phone=' + phone + '&mois=' + mois + '&jour=' + jour + '&annee=' + annee + '&subject=' + subject + '&message=' + message + '&vpb_captcha_code=' + vpb_captcha_code + '&submitted=1';
你永远不会打电话
id="element_4_1"
id="element_4_2"
id="element_4_3"
其中两个IDS(您应该只使用一个):“inspectiondésirée”
<span><label>Date d’inspection désirée</span></label>
<span><ul>
<li id="li_4" >
<span style="width:15%; float:left;">
<input id="element_4_1" id="mois" name="mois" class="element text" size="2" maxlength="2" type="text">
<label for="element_4_1">MM</label>
</span>
<span style="width:22%; float:left;">
<input id="element_4_2" id="jour" name="jour" class="element text" size="2" maxlength="2" type="text">
<label for="element_4_2">JJ</label>
</span>
<span style="width:18%; float:left;">
<input id="element_4_3" id="annee" name="annee" class="element text" size="4" maxlength="4" type="text">
<label for="element_4_3">AAAA</label>
</span>
Bonne chance!
答案 2 :(得分:-1)
如果您使用jQuery和AJAX寻找发布数据的正常路径,请使用http://malsup.com/jquery/form/这应该意味着您的代码更小并且您不会将数据从表单移动到查询字符串以发送到您的服务器它会为你做到这一切。
所以你只需要一个标准的HTML表单 使用动作设置方法虽然你想要GET或POST,然后你可以调用$(“#formID”)。ajaxSubmit();
您的服务器可以是标准的表单发布系统