【问题标题】:PHP form won't pass value to email anyone?PHP 表单不会将价值传递给任何人?
【发布时间】:2017-04-06 02:25:09
【问题描述】:

出于某种奇怪的原因,业务输入值不会提交到电子邮件...它总是空白..有人可以告诉我出了什么问题吗?谢谢!

<?php
// Check for empty fields
if(isset(empty($_POST['submit'])      ||
   empty($_POST['email'])     ||
   empty($_POST['phone'])     ||
   empty($_POST['business'])  ||
   empty($_POST['message'])   ||
   !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
   {
   echo "No arguments Provided!";
   return false;
   }

$name = strip_tags(htmlspecialchars($_POST['name']));
$email_address = strip_tags(htmlspecialchars($_POST['email']));
$phone = strip_tags(htmlspecialchars($_POST['phone']));
$business = strip_tags(htmlspecialchars($_POST['business']));
$message = strip_tags(htmlspecialchars($_POST['message']));

// Create the email and send the message
$to = 'somekoreanguy@gmail.com'; // Add your email address inbetween the '' replacing yourname@yourdomain.com - This is where the form will send a message to.
$email_subject = "Website Contact Form:  $name";
$email_body = "You have received a new message from your website contact form.\n\n"."Here are the details:\n\nName: $name\n\nEmail: $email_address\n\nPhone: $phone\n\nBusiness: $business\n\nMessage:\n$message";
$headers = "From: noreply@yourdomain.com\n"; // This is the email address the generated message will be from. We recommend using something like noreply@yourdomain.com.
$headers .= "Reply-To: $email_address";   
mail($to,$email_subject,$email_body,$headers);
return true;         
?>

这是我的 HTML:

<form name="sentMessage" id="contactForm" novalidate method="post">
                    <div class="row">
                        <div class="col-md-6">
                            <div class="form-group">
                                <input type="text" class="form-control" placeholder="Your Name *" id="name" required data-validation-required-message="Please enter your name.">
                                <p class="help-block text-danger"></p>
                            </div>
                            <div class="form-group">
                                <input type="email" class="form-control" placeholder="Your Email *" id="email" required data-validation-required-message="Please enter your email address.">
                                <p class="help-block text-danger"></p>
                            </div>
                            <div class="form-group">
                                <input type="tel" class="form-control" placeholder="Your Phone *" id="phone" required data-validation-required-message="Please enter your phone number.">
                                <p class="help-block text-danger"></p>
                            </div>
                            <div class="form-group">
                                <input type="text" class="form-control" placeholder="Your Business Name *" id="business" required data-validation-required-message="Please enter your business name.">
                                <p class="help-block text-danger"></p>
                            </div>
                            <div class="col-md-6">
                                <div class="form-group">
                                    <textarea class="form-control" placeholder="Your Message *" id="message" required data-validation-required-message="Please enter a message."></textarea>
                                    <p class="help-block text-danger"></p>
                                </div>
                            </div>
                        <div class="clearfix"></div>
                        <div class="col-lg-12 text-center">
                            <div id="success"></div>
                            <button type="submit" name="submit" class="btn btn-xl">Send Message</button>
                        </div>
                    </div>
                </form>

由于某种原因,当我输入“empty($_POST['business']) ||”在那里,电子邮件没有任何内容。当我从我的业务 html 部分中删除 "type="text" 时,电子邮件会通过,但没有任何价值。它只会说业务:和空白....

【问题讨论】:

  • 需要查看表单,希望它使用POST而不是GET
  • 你能把表格发过来吗?
  • PHP 错误日志中有什么内容?
  • @nogad 我没有在我的表单上看到 POST 或 GET... =/ 我在哪里可以找到它?
  • @mkaatman 我没有看到任何错误日志...我尝试附加 ini_set('display_errors', 1); ini_set('display_startup_errors', 1);错误报告(E_ALL);到我的代码,但什么都没有。我在我的服务器上找不到 PHP.ini 文件来打开它..

标签: php forms email


【解决方案1】:

你没有定义method="post"

<form name="sentMessage" id="contactForm" novalidate>

所以它会像

<form name="sentMessage" id="contactForm" novalidate method="post">

起名字

&lt;button type="submit" name ="submit" class="btn btn-xl"&gt;Send Message&lt;/button&gt;

所以你的代码将是

if(isset($_POST['submit']){
//set your code here
}

【讨论】:

  • 完成您发布的操作后,它显示一条消息说邮件服务没有响应,请稍后在我单击提交按钮时尝试。
  • 我已经根据您的更改更新了 PHP 和 HTML 代码。
  • 提交代码现在可以工作了,另一个问题是你的PHP邮件代码,我建议你可以使用电子邮件插件来处理你的邮件服务PHP邮件-github.com/PHPMailer/PHPMailer
  • 我还在学习 PHP,当我看到一个插件时,它对我来说还没有完全处理,所以当我了解更多时,我会研究插件。谢谢。
【解决方案2】:

它总是空白,因为在您的输入表单中没有name=""name="" 在提交表单后引用表单数据。像这样将name="" 添加到您的输入中..

<?php
// Check for empty fields
if(isset($_POST['submit'])) {
if(trim($_POST['email'])== ''  || trim($_POST['phone'])== ''   || trim($_POST['business'])== ''  || trim($_POST['message'])== ''  || !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "No arguments Provided!";
}else{
$name = strip_tags(htmlspecialchars($_POST['name']));
$email_address = strip_tags(htmlspecialchars($_POST['email']));
$phone = strip_tags(htmlspecialchars($_POST['phone']));
$business = strip_tags(htmlspecialchars($_POST['business']));
$message = strip_tags(htmlspecialchars($_POST['message']));

// Create the email and send the message
$to = 'somekoreanguy@gmail.com'; // Add your email address inbetween the '' replacing yourname@yourdomain.com - This is where the form will send a message to.
$email_subject = "Website Contact Form:  $name";
$email_body = "You have received a new message from your website contact form.\n\n"."Here are the details:\n\nName: $name\n\nEmail: $email_address\n\nPhone: $phone\n\nBusiness: $business\n\nMessage:\n$message";
$headers = "From: noreply@yourdomain.com\n"; // This is the email address the generated message will be from. We recommend using something like noreply@yourdomain.com.
$headers .= "Reply-To: $email_address";   
mail($to,$email_subject,$email_body,$headers);
}
}
?>
<html>
<head>
</head>     
<body>
    <form name="contactForm" novalidate method="POST">
    <div class="row">
        <div class="col-md-6">
            <div class="form-group">
                <input type="text" class="form-control" placeholder="Your Name *" name="name" id="name" data-validation-required-message="Please enter your name." required>
                <p class="help-block text-danger"></p>
            </div>
            <div class="form-group">
                <input type="email" class="form-control" placeholder="Your Email *" name="email" id="email" data-validation-required-message="Please enter your email address." required>
                <p class="help-block text-danger"></p>
            </div>
            <div class="form-group">
                <input type="tel" class="form-control" placeholder="Your Phone *" name="phone" id="phone" data-validation-required-message="Please enter your phone number." required>
                <p class="help-block text-danger"></p>
            </div>
            <div class="form-group">
                <input type="text" class="form-control" placeholder="Your Business Name *" name="business" id="business" data-validation-required-message="Please enter your business name." required>
                <p class="help-block text-danger"></p>
            </div>
            <div class="col-md-6">
                <div class="form-group">
                    <textarea class="form-control" placeholder="Your Message *" name="message" id="message" data-validation-required-message="Please enter a message." required></textarea>
                    <p class="help-block text-danger"></p>
                </div>
            </div>
        <div class="clearfix"></div>
        <div class="col-lg-12 text-center">
            <div name="success"></div>
            <button type="submit" name ="submit" class="btn btn-xl">Send Message</button>
    </form>
</body>
</html>

【讨论】:

  • 谢谢,但我可以问一个问题吗?是什么让您将 ID 更改为名称?我想知道你做出这个决定的原因?我还在学习 PHP.. 谢谢!
  • 另外,可以在最顶部给出两个名字吗? sentMessage 和contactForm?
  • 更改后,当我按下提交按钮时没有任何反应 =/
  • 您可以同时使用 id 和 name。有关 id 和 nama 的更多信息:stackoverflow.com/questions/7470268/html-input-name-vs-id
  • 谢谢,我会检查并告诉你结果!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 2014-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
相关资源
最近更新 更多