【问题标题】:html contact form doesn't recognise php filehtml 联系表单无法识别 php 文件
【发布时间】:2016-11-28 07:58:18
【问题描述】:

-----自第一次发布以来,代码已被修改-----

为了我的一生,我无法让它发挥作用。下面提到的页面将无法识别根主题文件夹中的 email.php 文件。我什么都试过了!

目的:用户提交详细信息的 HTML 联系表,PHP 脚本收集用户的名字、姓氏和电子邮件地址,然后将他们重定向到感谢页面。

问题:HTML 联系表单显示正常,但是当我点击“好的,给我发送优惠券代码!”时它提供了 URL:http://charliesonlinestore.com/free-delivery-coupon-page/email.php 并带有“未找到任何内容”,此时它应该重定向到感谢页面。

这是来自 HTML 的表单代码:

<div class="form">

<form method="post" name="landing-page" action="<?php echo get_template_directory_uri(); ?>/email.php">

First Name<br>
<input type="text" name="first_name"><br><br>

Last Name<br>
<input type="text" name="last_name"><br><br>

Email Address<br>
<input type="text" name="email"><br><br>

<input type="submit" name="submit" value="Okay, send me a voucher code!">

</form>

</div>

这是我的 PHP 脚本代码:

<?php
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email_from = $_POST['email'];
$to = 'charlie@charliesonlinestore.com';
$body = 'Here your email body text';
$subject = 'NEW Subscriber';
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'From: Lead Generator <Charlie@charliesonlinestore.com>' .
"\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

if($_POST['submit']){
    if(mail($to, $subject, $headers)){
         echo "mail send"; // change this later to your header location
    }
    else{
        echo 'error sending mail';
    }
}
else{
    echo 'no post data';
}
?>

确认点:

  • email.php 位于主题文件夹 storefront 的根目录中。

  • 示例中的所有项目都在根文件夹 storefront 中提供。

  • 当我在本地主机(单独的服务器)上测试它时,它工作正常并且重定向没有问题。

如果您对为什么会发生这种情况有任何想法,那么我将不胜感激。我几乎已经完成了我自己的定制联系表格、潜在客户生成和感谢页面!

请注意,我检查了以前的帖子并尝试了诸如在 PHP 文件名前放置“/”之类的方法,还尝试将文件服务器地址放在文件名前,但无济于事。

请帮忙!

【问题讨论】:

  • 仅供参考,您在if (mail ($to, $subject, $headers)) 之后缺少大括号{},因此您的退出在提交时一直被触发。
  • @AlainTiemblo 谢谢你的帖子。在 if ($_POST['submit']) { 和 header('Location: page-thankyou.php'); 之后我确实有括号。出口; } 为什么不这样做呢?
  • 您的表单中还有 2 个name 字段。但这仍然不是问题。
  • 如果您的 html 文件在 / 文件夹中并且 email.php 在 /theme 文件夹中,您可以尝试将您的操作定位到 theme/email.php ...
  • 将结果更改为if(mail ($to, $subject, $headers)){ echo "mail send"; } else{ echo "error sending mail";} 之类的输出然后您查看脚本是否正常工作。可能存在电子邮件发送错误。而且,email.php 的 url 是什么。 http://charliesonlinestore.com/wp-content/themes/storefront/email.php 是此时发送的 url。对吗?

标签: php html css


【解决方案1】:

我花了一点时间才看到它。问题是您的邮件功能。 php 邮件功能需要在标头之前添加一条消息。然后你替换你的 $header 变量而不是扩展它。

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $to = 'charlie@charliesonlinestore.com';
    $body = 'Here your email body text';
    $subject = 'NEW Subscriber';
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'From: Your name <Charlie@charliesonlinestore.com>' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

    if($_POST['submit']){
        if(mail($to, $subject, $body, $headers)){
             echo "mail send"; // change this later to your header location
        }
        else{
            echo 'error sending mail';
        }
    }
    else{
        echo 'no post data';
    }
?>

【讨论】:

  • 非常感谢您,有趣的是我收到错误 500 - 内部服务器错误处理您的请求时遇到错误。通常这是暂时的情况。请联系网站所有者以获得进一步的帮助。所以我认为这取决于我的服务器,因为我在使用 @MasivuyeCokile 的解决方案时得到了这个。我将对此进行进一步调查,因为可能存在某种服务器限制。感谢您的帮助。
  • 只是补充一下 - 我在应用您的解决方案后收到了上述错误。我将其复制并粘贴到 email.php 中。
  • 嗯。好吧,看来我们必须从头开始。从文件中删除所有内容并回显一些文本。 &lt;?php echo "works"; ?&gt; 并告诉我它的输出是否有效,或者您是否仍然有 500 错误。
  • @CharlieMarsh 清除电子邮件页面上的所有内容,然后按照 Paules 的建议回显任何字符串。
  • 在 email.php 中。必须是托管服务器? :s
猜你喜欢
  • 1970-01-01
  • 2015-08-04
  • 2017-03-10
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多