【问题标题】:jquery validated form sends blank emailsjquery 验证表单发送空白电子邮件
【发布时间】:2014-03-21 22:32:35
【问题描述】:

表单工作正常,如果您填写它,它会发送电子邮件,如果您没有填写所有输入,它会警告您必须这样做,并且在您完成之前不会发送表单。

我正在使用我正在使用 jquery.validate.js,但最近,我收到了空白电子邮件。如果验证有效(我什至在旧浏览器中进行了测试),为什么它会向我发送空白电子邮件?

HTML

<form id="contact-form" method="post" action="contacto.php">
                <fieldset>

                    <div class="control-group">
                        <div class="controls">
                            <input name="name" id="name" type="text" placeholder="Nombre" required> 
                        </div>
                    </div>

                    <div class="control-group" style="margin-top:10px;">
                        <div class="controls">
                            <input type="text" name="email" id="email" placeholder="Email" required>
                        </div>
                    </div>

                    <div class="control-group" style="margin-top:10px;">
                        <div class="controls">
                            <textarea class="input-xlarge" name="message" id="message" rows="3" placeholder="Mensaje"></textarea>
                        </div>
                    </div>

                <div class="form-actions">
                    <button type="submit" class="demo-pricing demo-pricing-1">Submit</button>
                    <button type="reset" class="demo-pricing demo-pricing-1">Cancel</button>
                </div>
            </fieldset>
        </form>

PHP

$subject = "Web";

$to = 'contact@web.com';
$header .= "Content-Type: text/html; charset=UTF-8";
$headers = "From: " . $_POST["name"]; 
$headers .= "<" . $_POST["email"] . ">\r\n"; 
$headers .= "Reply-To: " . $_POST["email"] . "\r\n"; 
$headers .= "Return-Path: " . $_POST["email"]; 

$message .= "************************************************** \n";
$message .= "Contact \n";
$message .= "************************************************** \n\n";  

$message .= "Nombre: " . $_POST["name"] . "\r";
$message .= "E-mail: " . $_POST["email"] . "\r";
$message .= "Mensaje: " . $_POST["message"] . "\r";

$mail_sent = mail($to, $subject, $message, $headers); 
if ($mail_sent == true){ ?>         <script language="javascript" type="text/javascript">         window.alert('behold, we are aware of you')
    window.location.href='index.html';         </script>     <?php } else { ?>     <script language="javascript" type="text/javascript">         alert('nope, try again');      </script>     <?php     } 

更新:原来是服务器出了问题,或者他们告诉我的,我无能为力。

【问题讨论】:

  • 确保使用\r\n 来终止$message 中的每一行。
  • 尝试在Return-path 行之后添加\r\n
  • 那么这里真正的问题是什么?您的表格已填写但电子邮件为空?或者通过电子邮件发送一个空表格?您完成了哪些基本故障排除?你看过 $_POST 数组中有什么吗?
  • 通过电子邮件发送了一个空表单,对不起,我不清楚。另外,我添加了 \r\n 以按照 vee 和 jboneca 的建议以一种形式终止每一行(我在两个不同的网站上遇到了这个问题),并且到目前为止,它还没有再次发送空白电子邮件(至少超过周末)。我会对另一个做同样的事情,看看它是否有效。谢谢各位
  • 我总是收到空白邮件,我很生气

标签: javascript php jquery email


【解决方案1】:

您正在使用客户端验证这一事实并不能保证您将始终在后端收到有效的输入。无论您是否在浏览器中执行此操作,您都应该始终在您的 PHP 脚本中进行验证。在某些情况下,用户禁用了 JS,甚至是对您的服务器端脚本的恶意框架请求。

【讨论】:

  • 这个一般性建议如何解决他的问题?
  • 因为问题中没有提到如果每次提交表单时都会发送空白电子邮件。这可能是完全不同的情况造成的结果。
  • 我同意,这就是为什么我发布了 comment,而不是答案。
  • 你是对的!我们需要确认发生了什么。感谢您让我知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多