【发布时间】: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