问题描述
|
我在网上找到了一个简单的免费电子邮件联系表。它并不能完全满足我的要求,我希望可以从专家那里得到一些帮助。我想知道几件事。首先,我希望当用户单击“提交”时,会向我发送一封包含填写的信息的电子邮件。目前,这还没有发生。仅当在“电子邮件”字段中输入我的电子邮件地址时,表单提交后才会向我发送电子邮件。我也想知道如何添加另一个变量来捕获,例如... \'job title \'。我不必担心验证码捕获垃圾邮件,而且我不会再搞乱表单验证(我发现的脚本中已经不存在)了。各位,任何帮助都会很棒!
<?PHP
if(isset($_POST[\'email\'])) {
// EDIT THE 2 LInes BELOW AS required
$email_to = \"[email protected]\";
$email_subject = \"KARRN poster\";
function died($error) {
// your error code can go here
echo \"We are very sorry,but there were error(s) found with the form you submitted. \";
echo \"These errors appear below.<br /><br />\";
echo $error.\"<br /><br />\";
echo \"Please go back and fix these errors.<br /><br />\";
die();
}
// validation expected data exists
if(!isset($_POST[\'first_name\']) ||
!isset($_POST[\'last_name\']) ||
!isset($_POST[\'email\']) ||
!isset($_POST[\'telephone\']) ||
!isset($_POST[\'comments\'])) {
died(\'We are sorry,but there appears to be a problem with the form you submitted.\');
}
$first_name = $_POST[\'first_name\']; // required
$last_name = $_POST[\'last_name\']; // required
$email_from = $_POST[\'email\']; // required
$telephone = $_POST[\'telephone\']; // not required
$comments = $_POST[\'comments\']; // required
$error_message = \"\";
$email_exp = \'/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}$/\';
if(!preg_match($email_exp,$email_from)) {
$error_message .= \'The Email Address you entered does not appear to be valid.<br />\';
}
$string_exp = \"/^[A-Za-z .\'-]+$/\";
if(!preg_match($string_exp,$first_name)) {
$error_message .= \'The First Name you entered does not appear to be valid.<br />\';
}
if(!preg_match($string_exp,$last_name)) {
$error_message .= \'The Last Name you entered does not appear to be valid.<br />\';
}
if(strlen($comments) < 2) {
$error_message .= \'The Comments you entered do not appear to be valid.<br />\';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = \"Form details below.\\n\\n\";
function clean_string($string) {
$bad = array(\"content-type\",\"bcc:\",\"to:\",\"cc:\",\"href\");
return str_replace($bad,\"\",$string);
}
$email_message .= \"First Name: \".clean_string($first_name).\"\\n\";
$email_message .= \"Last Name: \".clean_string($last_name).\"\\n\";
$email_message .= \"Email: \".clean_string($email_from).\"\\n\";
$email_message .= \"Telephone: \".clean_string($telephone).\"\\n\";
$email_message .= \"Comments: \".clean_string($comments).\"\\n\";
// create email headers
$headers = \'From: \'.$email_from.\"\\r\\n\".
\'Reply-To: \'.$email_from.\"\\r\\n\" .
\'X-Mailer: PHP/\' . PHPversion();
@mail($email_to,$email_subject,$email_message,$headers);
?>
<!-- include your own success html here -->
Thank you for contacting us. We will be in touch with you very soon.
<?PHP
}
?>
的HTML
<form name=\"contactform\" method=\"post\" action=\"send_form_email.PHP\">
<table width=\"450px\">
</tr>
<tr>
<td valign=\"top\">
<label for=\"first_name\">First Name *</label>
</td>
<td valign=\"top\">
<input type=\"text\" name=\"first_name\" maxlength=\"50\" size=\"30\">
</td>
</tr>
<tr>
<td valign=\"top\"\">
<label for=\"last_name\">Last Name *</label>
</td>
<td valign=\"top\">
<input type=\"text\" name=\"last_name\" maxlength=\"50\" size=\"30\">
</td>
</tr>
<tr>
<td valign=\"top\">
<label for=\"email\">Email Address *</label>
</td>
<td valign=\"top\">
<input type=\"text\" name=\"email\" maxlength=\"80\" size=\"30\">
</td>
</tr>
<tr>
<td valign=\"top\">
<label for=\"telephone\">Telephone Number</label>
</td>
<td valign=\"top\">
<input type=\"text\" name=\"telephone\" maxlength=\"30\" size=\"30\">
</td>
</tr>
<tr>
<td valign=\"top\">
<label for=\"comments\">Comments *</label>
</td>
<td valign=\"top\">
<textarea name=\"comments\" maxlength=\"1000\" cols=\"25\" rows=\"6\"></textarea>
</td>
</tr>
<tr>
<td colspan=\"2\" style=\"text-align:center\">
<input type=\"submit\" value=\"Submit\"> <a href=\"#\">Email Form</a>
</td>
</tr>
</table>
</form>
解决方法
您只需将其添加到表单中即可添加另一个字段(例如
<input type=\"text\" name=\"job-title\" />
)。
您可以使用$_POST[\'job-title\']
检索在PHP脚本中输入该字段的值。
该脚本应将电子邮件发送到分配给$email_to
变量的任何电子邮件地址。
, 看到写着“ 5”的那一行?您可以重复该操作,并对您的电子邮件地址进行硬编码,以确保在有人提交表单时始终收到电子邮件。如果要更改其中包含的消息,只需创建一个新变量(例如$email_message2
,并将其传递给对mail()
的新调用)。
至于添加job_title字段,您只需要执行以下操作:$jobTitle = $_POST[\'job_title\']
。然后,您可以将该变量附加到电子邮件中。在表格上,您将添加<input type=\"text\" name=\"job_title\" />
。寻找ѭ10的其他实例,并确保为此新字段添加适当的代码(这是用于验证)。
, 如果您希望它能够在没有电子邮件地址的情况下提交,则应停止要求与此行一起发送电子邮件
if(isset($_POST[\'email\']))
请注意,如果未设置$_POST[\'email
]
,则以后必须将空白值设置为$ email_,这样您就不会在$email_from = $_POST[\'email\']; // required
上从PHP收到通知。
要添加职位,只需在表单上添加<input>
,然后像其他已发布的变量一样通过post访问即可。您可以通过将其添加到验证其他POST的行中来进行要求。
顺便说一句,如果您的表格是公开的,我强烈建议您在上面加一个验证码。垃圾邮件发送者不是您唯一关心的问题,您也可能会遭到恶意人员的电子邮件轰炸。这发生在我身上,所以我总是推荐一个验证码。
, 只需使用elformo.com并完成它!