不,我是这个表格的新手!
我已成功设置联系表单页面。它通过电子邮件向我发送表单字段中的“电子邮件地址”和“邮件”,但不发送名称字段值,它只是空白。
我看不出我哪里出错了。所有字段名称都与PHP文件匹配。关于我做错了什么的想法?
这是我的代码:
<form id="form_28" name="website_query" action="mailform2.php" accept-charset="UTF-8" method="post" target="_self" enctype="multipart/form-data" style="margin:0;position:absolute;left:231px;top:242px;width:343px;height:229px; /*MainDivStyle*/" __AddCode="here">
<!--MainDivStart-->
<!-- HTML Frame - name txt_31 -->
<!--Preamble-->
<div style="position:absolute;left:8px;top:8px;width:51px;height:18px;overflow:hidden; /*BorderDivStyle*/" __AddCode="InsideBorderDiv">
<!--BorderDivContents-->
<p class="Wp-Body-P"><label for="edit_1"><span class="Body-C">name</span></label></p>
</div>
<!--Postamble-->
<!-- Form Edit box edit_1 -->
<!--Preamble-->
<input type="text" id="edit_1" name="name" value="" style="position:absolute; left:103px; top:8px; width:50px; /*Tag Style*/" __AddCode="here">
<!--Postamble-->
<!-- HTML Frame - email txt_32 -->
<!--Preamble-->
<div style="position:absolute;left:8px;top:38px;width:51px;height:18px;overflow:hidden; /*BorderDivStyle*/" __AddCode="InsideBorderDiv">
<!--BorderDivContents-->
<p class="Wp-Body-P"><label for="edit_19"><span class="Body-C">email</span></label></p>
</div>
<!--Postamble-->
<!-- Form Edit box edit_19 -->
<!--Preamble-->
<input type="text" id="edit_19" name="email" value="" style="position:absolute; left:103px; top:38px; width:50px; /*Tag Style*/" __AddCode="here">
<!--Postamble-->
<!-- HTML Frame - message txt_33 -->
<!--Preamble-->
<div style="position:absolute;left:8px;top:68px;width:79px;height:18px;overflow:hidden; /*BorderDivStyle*/" __AddCode="InsideBorderDiv">
<!--BorderDivContents-->
<p class="Wp-Body-P"><label for="text_2"><span class="Body-C">message</span></label></p>
</div>
<!--Postamble-->
<!-- Text Area text_2 -->
<!--Preamble-->
<textarea id="text_2" name="message" rows="2" cols="10" style="position:absolute; left:103px; top:68px; width:100px; height:38px; /*Tag Style*/" __AddCode="here"></textarea>
<!--Postamble-->
<!-- HTML Frame - captcha txt_34 -->
<!--Preamble-->
<div style="position:absolute;left:8px;top:114px;width:69px;height:18px;overflow:hidden; /*BorderDivStyle*/" __AddCode="InsideBorderDiv">
<!--BorderDivContents-->
<p class="Wp-Body-P"><label for="captcha_1"><span class="Body-C">captcha</span></label></p>
</div>
<!--Postamble-->
<!-- Form CAPTCHA captcha_1 -->
<!--Preamble-->
<div style="position:absolute;left:103px;top:114px;width:190px;height:69px; /*MainDivStyle*/" __AddCode="here">
<!--MainDivStart-->
<img src="http://www.serifwebresources.com/util/img_verify.php?gen_word=1&id=captcha_1"><br><input type="text" id="captcha_1" name="captcha_1" size="20" __AddCode="here">
<a title="Listen to audio CAPTCHA" href="http://www.serifwebresources.com/util/audio/audio.php"><img alt="Listen to audio CAPTCHA" style="vertical-align: middle" src="http://www.serifwebresources.com/media/icons/audio-desc.png" border="0"></a><!--MainDivEnd-->
</div>
<!--Postamble-->
<!-- Form Button butn_4 -->
<!--Preamble-->
<input type="submit" style="position:absolute; left:8px; top:191px; width:81px; height:22px; /*Tag Style*/" value="Submit" __AddCode="here">
<!--Postamble-->
</form>
PHP代码(mailform2.php):
<?php
$errors = '';
$myemail = 'myemail';//<-----Put Your email address here.
if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['message']))
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
if( empty($errors))
{
$to = $myemail;
$email_subject = "Website Query: $name";
$email_body = "You have received a new message. ".
" Here are the details:\n Name: $name \n Email: $email \n Message \n $message";
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email";
mail($to,$email_subject,$email_body,$headers);
//redirect to the 'thank you' page
header('Location: contact-form-thank-you.html');
}
?>
答案 0 :(得分:1)
if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['message']))
$name = $_POST['name'];
在上面的代码中,如果姓名,电子邮件和消息的帖子为空,则设置名称= $ _POST ['name'];
未设置SO $名称变量。
这样的代码
if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['message'])) {
$errors = 'Please enter all required fields';
}
else
{
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
}
答案 1 :(得分:0)
如果您提交,请尝试删除value=''
<input type="text" id="edit_1" name="name" style="position:absolute; left:103px; top:8px; width:50px; /*Tag Style*/" __AddCode="here">
看看它是否有效!
将sumbit的value
更改为名称:name='submit'
<input type="submit" style="position:absolute; left:8px; top:191px; width:81px; height:22px; /*Tag Style*/" name="submit" __AddCode="here">
你可能想改变php部分看起来像这样:
<?php
$errors = '';
$myemail = 'myemail';//<-----Put Your email address here.
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
if(isset($_POST['sumbit']) && (
empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['message'])))
{
echo "Please fill up the fields";
}
elseif(isset($_POST['sumbit']) && empty($errors)){
$to = $myemail;
$email_subject = "Website Query: $name";
$email_body = "You have received a new message. ".
" Here are the details:\n Name: $name \n Email: $email \n Message \n $message";
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email";
mail($to,$email_subject,$email_body,$headers);
//redirect to the 'thank you' page
header('Location: contact-form-thank-you.html');
}
?>
答案 2 :(得分:0)
if(!isset($_POST['name']) && !isset($_POST['email']) && !isset($_POST['message'])) {
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
}else{
$errors = ''; //process
}
添加花括号。 你错过了花括号。因此,如果每个POST变量都有一个值,则不会设置name变量。另外两个是因为没有大括号,if语句在第一个语句之后结束。
编辑,我认为你的逻辑也是错误的。您可能想要说明所有这些值是否都为空,然后处理。
答案 3 :(得分:0)
好的,我在这里调试了,这是更正的工作代码。你必须使用isset而不是空
<?php
$errors = '';
$myemail = 'myemail';//<-----Put Your email address here.
if(isset($_POST['name']) ||
isset($_POST['email']) ||
isset($_POST['message'])) {
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
}
if( empty($errors))
{
$to = $myemail;
$email_subject = "Website Query: $name";
$email_body = "You have received a new message. ".
" Here are the details:\n Name: $name \n Email: $email \n Message \n $message";
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email";
//redirect to the 'thank you' page
header('Location: contact-form-thank-you.html');
}
?>
我还介绍了if循环,你可以将邮件发送代码放在if循环中
希望这有帮助