1

我正在尝试使用简单的 PHP mail() 函数从网站创建用户反馈。我使用 W3 中的“PHP Secure E-mail”示例脚本作为基础。由于电子邮件的性质,没有必要增加安全性或使用与该主题相关的其他帖子中建议的某些库,例如 swift mailer。

加载基本表单并选择“发送邮件”按钮后,我收到“服务器错误”消息和以下支持信息:

“网站在检索http://www.examplewebsite/formsuccessful.php?forename=Joe&surname=Blogs&email=j.oe.blogs%40example.co.uk&subject=TEST+2&message=Test+Content时遇到错误 它可能已关闭维护或配置不正确。”

文件“formsuccessful.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>

等着让我指出明显的犯罪行为。

4

3 回答 3

3

您似乎在这里有一些错误:

mail("admin@examplewebsite.com", "Subject: "$subject,
  "Message: "$message, "From: "$email," ",$name );

如果你想连接,你需要使用类似的东西:

mail("admin@examplewebsite.com", "Subject: " . $subject,
  "Message: " . $message, "From: " . $email);

您还有一个参数太多,我不确定您想对最后一部分做什么,," ", $name但这不是最后一个参数的有效输入,请参阅mail.

于 2012-09-01T01:15:34.020 回答
2

您的表单正在使用不正确的方法“REQUEST”,它应该是 GET 或 POST。另一方面,您使用的 php 代码似乎是正确的,但@jeroen 已经指出的邮件功能除外。

于 2012-09-01T02:03:30.520 回答
0

将表单方法更改为“发布”

另外,我认为这不会产生影响,但在表单操作中使用完整的 URL。

即:form method="POST" action="http://www.example.com/path/to/file/formsuccessful.php"

于 2012-09-01T02:07:11.373 回答