订阅表格不起作用(PHP)

时间:2014-01-22 18:49:50

标签: php html email subscription

我试图允许访问我网站的人通过填写简短表格并让网站向我发送包含该信息的电子邮件进行订阅,但目前该表单甚至不会提交信息。一些帮助将不胜感激。

<form id="ContactForm" action="mail/MailHandler.php">
  <div class="success">Form submitted!<br><strong>Look forward to our next Monthly Mailer.</strong></div>
  <fieldset>
    <div class="wrapper">
      <label class="name">
        <span class="bg"><input type="text" value="Name:" class="input"></span>
        <span class="error">*This is not a valid name.</span> 
        <span class="empty">*This field is required.</span> 
      </label>
    </div>
    <div class="wrapper">
      <label class="email">
        <span class="bg"><input type="text" value="E-mail:" class="input"></span>
        <span class="error">*This is not a valid email address.</span> 
        <span class="empty">*This field is required.</span>
      </label>
    </div>
    <div class="btns">
      <a href="mail/MailHandler.php" class="button1" data-type="submit">
        <span><strong>submit</strong></span>
        <span class="active"><strong>submit</strong></span>
      </a>
    </div>
  </fieldset>
</form>

使用PHP如下

<?php
$owner_email = $_POST["myemail@address.com"];
$headers = 'From:' . $_POST["email"];
$subject = 'Monthly Mailer Subscriber ' . $_POST["name"];
$messageBody = "";

$messageBody .= '<p>' . $_POST["name"] . ' would like to be subscribed to your Monthly Mailer!</p>' . "\n";
$messageBody .= '<br>' . "\n";
$messageBody .= '<p>Email Address: ' . $_POST['email'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";

try{
    if(!mail($owner_email, $subject, $messageBody, $headers)){
        throw new Exception('mail failed');
    }else{
        echo 'mail sent';
    }
}catch(Exception $e){
    echo $e->getMessage() ."\n";
}
?>

问题解决了!问题在于我的输入没有名称和语法     $ owner_email = $ _POST [“myemail@address.com”]; 本来应该     $ owner_email ='myemail@address.com';

2 个答案:

答案 0 :(得分:4)

问题#1

您正在寻找POST个变量,但是通过GET发送它们,因为您从未明确将其设置为POST。要解决这个变化:

<form id="ContactForm" action="mail/MailHandler.php">

为:

<form id="ContactForm" action="mail/MailHandler.php" method="POST">

问题#2

您忘记提供输入名称:

<input type="text" value="Name:" class="input">

应该是:

<input type="text" value="Name:" name="name" class="input">

问题#3

您缺少提交按钮:

<input type="submit" value="submit">

那应该取代:

<a href="mail/MailHandler.php" class="button1" data-type="submit">
    <span><strong>submit</strong></span>
    <span class="active"><strong>submit</strong></span>
  </a>

答案 1 :(得分:0)

您没有设置表单元素名称。

您需要将输入更改为以下内容:

    <input type="text" value="E-mail:" name="email" class="input">
    <input type="text" value="Name:" name="name" class="input">