【问题标题】:How do I force form submit with Jquery如何强制使用 Jquery 提交表单
【发布时间】:2015-01-10 13:45:15
【问题描述】:

祝大家2015年快乐!

我有一个简单的联系我们的 php 表单。我正在用 parsley.js 验证它。验证工作正常,但我收到很多垃圾邮件。

我相信如果我只能在启用 Jquery 的情况下强制提交表单,那么它应该可以解决我的问题(对吗?)。

我不是 PhP/Jquery 方面的专家,我们将不胜感激。

这是我的 PHP 代码

<?php

// Define Variables i.e. name tag, as per form and set to empty
$contact_name = $contact_email = $contact_phone = $contact_message = "";

// Sanitize data and use friendly names
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = test_input($_POST["contact_name"]);
  $email = test_input($_POST["contact_email"]);
  $phone = test_input($_POST["contact_phone"]);
  $message = test_input($_POST["contact_message"]);
}
function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

// Set values
$to = 'info@foryourservice.in';
$subject = 'New Message from Website';
$headers = 'From: info@domainname.com' . "\r\n" .
   'Reply-To: info@domainname.com' . "\r\n" .
   'X-Mailer: PHP/' . phpversion();

// Set Email content           
$emailcontent = "A new message has been submitted from the website.
\n
Name : $name
Email : $email
Phone : $phone
Message : $message";

// Mail function
$send_contact=mail($to,$subject,$emailcontent,$headers);

if($send_contact){
header('Location: index.php#contactusform');
}
else {
echo "<script type='text/javascript'>alert('We encountered an ERROR! Please go back and try again.');</script>";
}

?>

这是我的 HTML(我使用 Twitter Bootstrap)

<form role="form" method="POST" action="contactusform.php" id="contactusform" data-parsley-validate>
<div class="col-xs-6">
    <div class="form-group" style="margin-bottom: -5px">
    <label for="input1"></label>
    <input type="text" name="contact_name" class="form-control" id="input1" placeholder="Name*" required data-parsley-required-message="Please enter your name">
    </div>
        <div class="form-group" style="margin-bottom: -5px">
    <label for="input2"></label>
    <input type="email" name="contact_email" class="form-control" id="input2" placeholder="Email Address*" data-parsley-trigger="change" required data-parsley-required-message="Please enter a valid Email address">
    </div>
    <div class="form-group" style="margin-bottom: -5px">
    <label for="input3"></label>
    <input type="tel" name="contact_phone" class="form-control" id="input3" placeholder="Phone Number*" required data-parsley-type="digits" data-parsley-minlength="10" data-parsley-maxlength="10" data-parsley-required-message="Please enter a 10 digit number">
        </div>
    <br>
    <div class="form-group">
    <button type="submit" id="contactbutton" class="btn btn-primary" style="background-color: #A8B645; border-color: transparent">Submit</button>
    </div>
</div>
<div class="col-xs-6">
    <div class="form-group">
    <label for="input4"></label>
    <textarea name="contact_message" class="form-control" rows="7" id="input4" placeholder="Message*" required required data-parsley-required-message="Say something!"></textarea>
        </div>
</div>
</form>

这就是垃圾邮件的样子:

已从网站提交了一条新消息。

姓名:お買い得アナスイ ミロード大壳り出しランキ 12531;グ 电子邮件:rsilau@gmail.com 电话:お買い得アナスイ ミロード大壳り出しランキ 12531;グ 消息:购物者在包上吹嘘 お買い得アナスイ ミロード大壳り出しランキ 12531;グ http://www.frkapaun.org/dyqfmnwg/ysl-annasuixmraAekm.asp

【问题讨论】:

  • 总是在带有位置的标头之后退出脚本。
  • 您可能需要采取更强有力的措施,例如阅读:clfsrpm.net/csrf,验证码也是一种简单的方法:w3schools.in/php/captcha。但也有专门的垃圾邮件控制工具,搜索你的问题无法解决的主题。

标签: javascript php jquery forms twitter-bootstrap


【解决方案1】:

在表单中添加隐藏字段:

<input type="hidden" value="0" id="botcheck" name="botcheck" />

然后用 jQuery 将值设置为1:

$("#botcheck").val("1");

然后服务器端检查$_POST["botcheck"]的值。

【讨论】:

  • 谢谢。我现在就试试这个。似乎它应该工作:)
【解决方案2】:

您可能想检查您的表单是否使用 ajax 提交:

 if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
  //Process form here
 }

For further explanation

【讨论】:

  • 感谢您的回复,但我没有使用 Ajax。
猜你喜欢
  • 1970-01-01
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 2017-01-03
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多