我正在尝试使用一个简单的PHP mail()函数从网站创建用户反馈。我使用W3中的"PHP安全电子邮件"示例脚本作为基础。由于电子邮件的性质,不需要增加安全性,也不需要使用与此主题相关的其他帖子中建议的一些库,例如swift mailer。
当加载基本表单并选择"发送邮件"按钮时,我会收到一条"服务器错误"消息和以下支持信息:
"网站在检索时遇到错误http://www.examplewebsite/formsuccessful.php?forename=Joe&姓=博客&电子邮件=j.oe.blogs%40example.co.uk&subject=TEST+2&message=测试+内容它可能已停机进行维护或配置不正确。"
文件"formsuccess.php"肯定在服务器上的正确文件夹中——除非我忽略了另一个设置来启用这种类型的php脚本?
我已经包含了下面的表单和PHP代码,以防出现错误。
我当然会感谢你的帮助,我在这所房子里跳舞过,很多次我再也看不到树上的木头了。
干杯。
PHP:
<?php
function spamcheck($field)
{
$field1=filter_var($field, FILTER_SANITIZE_EMAIL);
if(filter_var($field1, FILTER_VALIDATE_EMAIL))
{
return TRUE;
}
else
{
return FALSE;
}
}
if (isset($_REQUEST['email']))
{
$mail = $_REQUEST['email'];
$mailcheck = spamcheck($mail);
if ($mailcheck==FALSE)
{
echo "Invalid input";
}
else
{
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
$name = $_REQUEST['forename']." ".$_REQUEST['surname'];
mail("admin@examplewebsite.com", "Subject: "$subject,
"Message: "$message, "From: "$email," ",$name );
}
}
else{
//reload page with message highlighting error
}
?>
HTML表单:
<form method="REQUEST" action="formsuccessful.php">
<fieldset class="master">
<legend class="master" style="text-align:left;"><b><u>Personal Details:</u></b></legend>
<ol class="master">
<li class="master"><label class="master" for"forname">Forename<em class="master">*</em></label><input class="left" type="text" name="forename" size="30" /></li>
<li class="master"><label class="master" for"surname">Surname<em class="master">*</em></label><input type="text" name="surname" size="30" /></li>
<li class="master"><label class="master" for"email">Your Email<em class="master">*</em></label><input type="text" name="email" size="30" /></li>
</ol>
<legend class="master" style="text-align: left;"><b><u>Email Contents:</u></b></legend>
<ol class="master">
<li class="master"><label class="master" for="subject">Subject:<em class="master">*</em></label><input type="text" name="subject" size="30" /></li>
<li class="master"><label class="master" for="message">Content:<em class="master">*</em></label><textarea cols="50%" rows="20" onkeyup="checkContent()" name="message" id="message"></textarea></li>
<li class="master"><input type="submit" value="Send Email" /></li></ol>
</fieldset>
</form>
随时准备向我指出明显的犯罪行为。
这里似乎有一些错误:
mail("admin@examplewebsite.com", "Subject: "$subject,
"Message: "$message, "From: "$email," ",$name );
如果你想连接,你需要使用这样的东西:
mail("admin@examplewebsite.com", "Subject: " . $subject,
"Message: " . $message, "From: " . $email);
您还有一个参数太多了,我不确定您想对最后一个部分," ", $name
做什么,但这不是最后一个参数的有效输入,请参阅mail
的手册。
您的表单使用的方法"REQUEST"不正确,应该是GET或POST。另一方面,除了@jeroen已经指出的mail函数之外,您使用的php代码似乎是正确的。
将表单方法更改为"post"
此外,我认为这不会有什么不同,但在表单操作中使用完整的URL。
即:form method="POST"action="http://www.example.com/path/to/file/formsuccessful.php"