[英]Why can't I get the visitor's data, from my form, in my email using php?
我使用Dreamweaver CS6,而我正在使用的php代码会将表单发送到我的电子邮件中,但不会将填写者的数据发送到我的电子邮件中。 我在php上的代码是(实际电子邮件已替换为“ email@email.com”:
<?php
$to= "email@email.com";
$subject= "Endorsement Form";
$message= "Endorser name: " . $_POST['name'] . "\r\n" .
"Email: " . $_POST['email'] . "\r\n" .
"Address: " . $_POST['address'] . "\r\n" .
"City: " . $_POST['city'] . "\r\n" .
"State: " . $_POST['state'] . "\r\n" .
"Zip Code: " . $_POST['zipcode'] . "\r\n" .
"Phone Number: " . $_POST['phonenumber'] . "\r\n" .
"Endorsement Type " . $_POST['endorsementtype'] . "\r\n" . "\r\n" .
"Endorsement Quote " . $_POST['endorsementquote'] . "\r\n" ."\r\n" .
$from= $_POST['email'];
$headers= "From: $from" . "\r\n";
$headers .= "Bcc: email@email.com" . "\r\n";
mail($to,$subject,$message,$headers);
?>
而我的HTML表单:
<form id="endorsementForm" name="endorsementForm" method="post" action="email_form.php" enctype="text/plain">
<span id="sprytextfield1">
<label for="name">Name:</label>
<br />
<input type="text" name="name" id="name" />
<span class="textfieldRequiredMsg">*</span></span>
<p><span id="sprytextfield2">
<label for="email">Email:<br />
</label>
<input type="text" name="email" id="email" />
<span class="textfieldRequiredMsg">*</span><span class="textfieldInvalidFormatMsg">*</span></span></p>
<p><span id="sprytextfield3">
<label for="address">Address:</label>
<br />
<input type="text" name="address" id="address" />
<span class="textfieldRequiredMsg">*</span></span></p>
<p><span id="sprytextfield4">
<label for="city">City:</label>
<br />
<input type="text" name="city" id="city" />
<span class="textfieldRequiredMsg">*</span></span></p>
<p><span id="sprytextfield5">
<label for="state">State:<br />
</label>
<input type="text" name="state" id="state" />
<span class="textfieldRequiredMsg">*</span></span></p>
<p><span id="sprytextfield6">
<label for="zipcode">Zip Code:<br />
</label>
<input type="text" name="zipcode" id="zipcode" />
<span class="textfieldRequiredMsg">*</span><span class="textfieldInvalidFormatMsg">*</span></span></p>
<p><span id="sprytextfield7">
<label for="phonenumber">Phone Number:</label>
<br />
<input type="text" name="phonenumber" id="phonenumber" />
<span class="textfieldRequiredMsg">*</span></span></p>
<p>Endorsment Type:</p>
<p><span id="spryradio1">
<label>
<input type="radio" name="endorsementtype" value="type1" id="endorsementtype_0" />
Personal</label>
<br />
<label>
<input type="radio" name="endorsementtype" value="type2" id="endorsementtype_1" />
Professional</label>
<br />
<label>
<input type="radio" name="endorsementtype" value="type3" id="endorsementtype_2" />
Organization</label>
<br />
<span class="radioRequiredMsg">Please make a selection.</span> </span></p>
<p>Endorsment Quote:</p>
<p><span id="sprytextarea1">
<textarea name="endorsementquote" id="endorsementquote" cols="45" rows="5"></textarea>
<span class="textareaRequiredMsg">*</span></span></p>
<p>
<input type="submit" name="submit" id="submit" value="Submit" />
<input type="reset" name="reset" id="reset" value="Clear Form" />
请查阅我的脚注。
考虑到您的问题中可能缺少</form>
标记(我在您的问题下作了评论),您不会检查任何输入是否为空,从而导致没有邮件发送数据。
您需要对输入使用条件!empty()
。
旁注: &&
逻辑运算符表示AND
。 您也可以使用||
是逻辑OR
运算符,具体取决于您要检查的内容。
即:
if(!empty($_POST['var1']) && !empty($_POST['var2']) )
{
// run your code
}
您可以将其与其他POST数组一起添加。
参考:
另外,如果您的HTML表单和PHP位于同一文件内(未知但可能),那么这也将发送空数据。
因此,请为您的提交按钮使用条件isset()
,然后在其中使用条件empty()
。
您还可以使用$message
变量中的POST数组进行XSS注入。
将变量分配给POST数组,并使用验证过滤器。
您在此末尾还会遇到语法错误:
"Endorsement Quote " . $_POST['endorsementquote'] . "\r\n" ."\r\n" .
如果这是您的实际代码,则未正确关闭它。
如果应包含一个结束的分号并丢失最后一个点:
"Endorsement Quote " . $_POST['endorsementquote'] . "\r\n" ."\r\n";
错误报告会发现这一点。
脚注:
编辑:如Riggs所述。
您需要删除enctype="text/plain"
我没有看到显示的内容。 但是我上面的答案仍然适用,您应该这样做,因为您仍然会得到可能为空的数据。
这是一篇关于堆栈的文章:
从<form>
标记中删除enctype=
属性,使其默认为application/x-www-form-urlencoded
或将encytpe
更改为
enctype="application/x-www-form-urlencoded"
@ Fred-ii-也有很多好处
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.