【问题标题】:PHP Newsletter form not submittingPHP时事通讯表单未提交
【发布时间】:2019-08-20 17:48:50
【问题描述】:

我在使用 php 通讯表单时遇到了一些问题。表单不会将输入数据提交/发送到我的电子邮件。

当我填写表格时,它会在网站上给我一条确认消息,但它没有转发数据。

你们有什么线索吗?

这是html表单:

                <div class="span3" id="footerNavNewsletter">
            <h6 class="Newslettersignup"><?php abc('newsletter_register');?></h6>
            <div id="reg-response"></div>
                    <!-- <form class="newsletter" name="newsletter" id="newsletter" method="post"> -->
            <form class="newsletter" name="newsletter" id="newsletterForm" method="post" data-async data-target="reg-response" action="<?php echo get_permalink(1372); ?>">
              <?php wp_nonce_field('nimbus_newsletter_nonce', '__nimbus_action_nonce'); ?>
              <input type="hidden" name="submitted" id="submitted" value="true" />
              <?php wp_referer_field( true ) ?>

              <input type="email" name="newsletter_email" placeholder="<?php abc('newsletter_form_email');?>" class="newsletterInput">
              <input type="text" name="newsletter_fullname" placeholder="<?php abc('newsletter_form_fullname');?>" class="newsletterInput">
              <input type="text" name="newsletter_company" placeholder="<?php abc('newsletter_form_company'); ?>" class="newsletterInput">
              <input type="text" name="newsletter_country" placeholder="<?php abc('newsletter_form_country'); ?>" class="newsletterInput">
              <input type="submit" id="submitNewsletter" value="<?php abc('newsletter_signup') ;?>" class="newsletterInput btn">
                    </form>
                </div>
            </div>

    <hr>
    <p>Copyright © 2017 Nimbus Nordic A/S. All rights reserved</p>
</div>

</footer>
<div class="modal hide" id="newsletterModal">
  <div class="modal-header">
    <button class="close" data-dismiss="modal">×</button>
    <h4 class="add_top_margin">Sign Up for Nimbus News</h4>
    <div id="modal-response"></div>
  </div>
  <form class="newsletter newsletterForm" name="newsletter" id="newsletterForm" method="post" data-async data-target="modal-response" action="<?php echo get_permalink(1372); ?>">
    <div class="modal-body">
        <?php wp_nonce_field('nimbus_newsletter_nonce', '__nimbus_action_nonce'); ?>
        <input type="hidden" name="submitted" id="submitted" value="true" />
        <?php wp_referer_field(true); ?>

        <input type="email" name="newsletter_email" placeholder="<?php abc('newsletter_form_email');?>" class="newsletterInput">
        <input type="text" name="newsletter_fullname" placeholder="<?php abc('newsletter_form_fullname');?>" class="newsletterInput">
        <input type="text" name="newsletter_company" placeholder="<?php abc('newsletter_form_company'); ?>" class="newsletterInput">
        <input type="text" name="newsletter_country" placeholder="<?php abc('newsletter_form_country'); ?>" class="newsletterInput">

    </div>
    <div class="modal-footer">
      <button class="btn" data-dismiss="modal"><?php abc('close'); ?></button>
      <input type="submit" id="submitNewsletter" value="<?php abc('newsletter_signup');?>" class="newsletterInput btn" />
    </div>
  </form>
</div>

这是我的 .php 文件:

<?php
  if(isset($_POST['submitted']) && isset($_POST['__nimbus_action_nonce']) && wp_verify_nonce($_POST['__nimbus_action_nonce'], 'nimbus_newsletter_nonce')) {


    $name = get_bloginfo('name');
    $to = 'st@nimbusnordic.com';

    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
    // $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $headers .= 'To: ' . $to . "\r\n";
    $headers .= 'From: '.$name.' <'.$to.'>'."\r\n";

    $n_mail = $_POST['newsletter_email'];
    $n_fullname = $_POST['newsletter_fullname'];
    $n_country = $_POST['newsletter_country'];
    $n_company = $_POST['newsletter_company'];


    $subject = 'New Newsletter Subscriber';
    $content = '
                A new Newsletter subscriber has been added.<br />
                Information about the subscriber:<br /><br />
                <strong>Email address</strong>: ' .$n_mail. '<br />
                <strong>Full name</strong>: ' . $n_fullname . '<br />
                <strong>Country:</strong> ' .$n_country.'<br />
                <strong>Company:</strong> ' . $n_company;

     $referrer = wp_get_referer();
    if(wp_mail($to, $subject, $content, $headers)) {
      echo 'Thank you for signing up to our newsletter!';
        // wp_redirect( add_query_arg('newsletter', 'success', $referrer) );
    //   exit;
    } else {
      echo 'Something went wrong. Please try again!';
      // wp_redirect( add_query_arg('newsletter', 'failed', $referrer) );
      // exit;
    }
  }
?>

【问题讨论】:

  • 输出的是哪条消息?您是否尝试过 var_dumping 数据?
  • 您的 PHP 服务器是否能够发送电子邮件?你得到输出的是哪条消息?您是否已经在另一台服务器上尝试过此表单?缺乏信息...
  • @Dominik 嘿,很抱歉缺少信息 - 这超出了我的专业知识范围。我不太确定是否是这样,我该如何检查?我得到的输出消息如下:“感谢您注册我们的时事通讯!”。我还没有在另一台服务器上尝试过该表单。
  • @MarkOverton Hey Mark,我得到的输出消息是:“感谢您订阅我们的时事通讯!”我如何 var_dump?
  • @Dominik 很遗憾,没有转发任何内容。我尝试了 2 封不同的电子邮件。这可能是一个 .php 问题吗?我们正在运行旧版本的 wordpress (3.7.3.),这也会导致问题吗?

标签: php wordpress


【解决方案1】:

您的代码没有问题。您的服务器可能不允许/无法发送电子邮件。请咨询您的服务器运营商/合作伙伴。

不过,请使用下面的简单邮件功能进行检查。

wp_mail("Your_email_address", "test", "check email sending");

【讨论】:

  • 您好 Vishal,我尝试将 wp_mail 函数添加到我的 functions.php 中,现在该站点因 HTTP ERROR 500 而关闭。这是 .php 问题的明显迹象吗?
  • 如下:function wp_mail("sebtramp@gmail.com", "test", "检查邮件发送");
  • 为什么在 wp_mail 函数之前使用“function”关键字?
  • 一时兴起。我只是直接将它添加到functions.php,然后它会发送一封测试电子邮件吗? wp_mail ("sebtramp@gmail.com", "test", "检查电子邮件发送");
  • 是的,它会发送邮件。如果您没有收到邮件,那么这是服务器/托管方面的问题,您必须与服务器管理员讨论
【解决方案2】:

您可以将“名称”的提交按钮添加为“已提交”的新属性。因为您正在检查 "$_POST['submitted']" 变量,但它没有根据我看到的定义。

【讨论】:

  • 定义为隐藏字段:&lt;input type="hidden" name="submitted" id="submitted" value="true" /&gt;
猜你喜欢
  • 1970-01-01
  • 2018-02-04
  • 2012-04-13
  • 2011-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多