我已经接管了其他人建立的网站的维护工作。这个站点主要是HTM / CSS,但是它使用了奇怪的javascript代码以及PHP,该代码是由签约的后端程序员实现的。
我遇到的问题是-该网站包含许多页面,每个页面都有自己独特的电子邮件表单。创建这些表格中的每一种都无需担心垃圾邮件。现在这些表格收到了大量垃圾邮件,我有望纠正该问题(无论我既不是Javascript也不是PHP程序员)。我需要一些帮助,因为由于该电子邮件系统的重要性,我无法尝试估计解决方案。
我希望我可以发布代码,并请某人指导我完成蜜罐或简单的数学方程式的过程(我知道这并不是100%可靠的方法,但是这些都是糟糕的水龙头,这个网站很可能不会主动成为目标)。
表单页面:该页面包含一些PHP,一些Javascript,但主要只是内容,由于其重要性不大,因此我将避免发布。但是,我将按顺序发布脚本。 (此外,productformvalidation.js文件是一个简单的Javascript脚本,如果电子邮件/电话号码中没有正确的字符,则会引发弹出消息。如有必要,我也可以提供此消息)
<?php
/* validation function for when they press the submit button */
function validateFields($fields, $form_vars) {
$errors = array();
foreach($fields as $field_name => $error_msg) {
$value_entered = trim(@$form_vars[$field_name]);
if(empty($value_entered)) {
$errors[$field_name] = $error_msg;
}
}
return $errors;
}
function safe($str) { return htmlentities(strip_tags($str)); }
?>
<head>
<script type="text/javascript" src="js/productFormValidation.js"></script>
</head>
<body>
<div class="contact_links">
<form name="contact" method="post" action="/sendmail/send-mail-start.php" enctype="multipart/form-data" onsubmit="return checkForm(this);">
<label>Name: (required) </label><input class="input1" id="name" name="name" type="text" value="" />
<label>Email: (required) </label><input class="input1" id="email" name="email" type="text" value="" /><br />
<label>Phone: (required) </label><input class="input1" id="phone" name="phone" type="text" value="" />
<label>Company: (required) </label><textarea class="input2" name="comments" id="comments" cols="" rows="1"></textarea><br />
<input type="image" src="images/individualProducts/submit.png" alt="" value="" class="submit" />
</form>
<!-- INDIVIDUAL CONTACT LINK ENDS --></div>
</body>
“操作”页面:
<?php
$date1=date("F d,Y");
$nameField=$_POST['name'];
$companyField=$_POST['company'];
$countryField=$_POST['country'];
$stateField=$_POST['state'];
$emailField=$_POST['email'];
$phoneField=$_POST['phone'];
$urlField=$_POST['url'];
$messageField=nl2br($_POST['comments']);
$body="
$body is followed by the table setup which contains the code. Basically just font-specifications, padding etc.
//$from=$firstNameField;
$sub="Contact Form - From the Start Page".$titleField;
$name=$firstNameField."< ".$emailField." >";
$to="info@mysite.com";
if (mail($to,$sub,$body,"From:".$name."\nContent-Type: text/html; charset=iso-8859-1"))
{
print "<meta http-equiv=\"refresh\" content=\"3;URL=/start.php\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.php\">";
}
?>
然后是HTML,基本上是感谢他们的联系。这些就是所涉及的脚本。
只要自己找到正确的指南并按照步骤进行操作,就可以自己创建网站,从而自己实施CAPTCHA。不幸的是,其他人已经组织了这个邮件结构,我不得不使用我不完全了解的设置-我也没有学会理解。我收到语法错误,不确定在哪里粘贴代码等。
我需要一个能看到我所掌握的东西并了解正在发生的事情的人,以帮助我实施一个简单的垃圾邮件解决方案,以防止出现讨厌的僵尸邮件。
另外-reCaptcha由于其大小和读取困难而无法选择。
先感谢您。
最佳答案
一种快速(但不完美)的解决方案是添加一个隐藏的字段,机器人会将其填充(将其称为“用户名”,并使用CSS将其隐藏),如果该字段包含内容,则取消提交。至少将删除大量垃圾邮件提交。
您的表单如下所示:
<form name="contact" method="post" action="/sendmail/send-mail-start.php" enctype="multipart/form-data" onsubmit="return checkForm(this);">
<label>Name: (required)</label>
<input class="input1" id="name" name="name" type="text" value="" />
<label class="hidethis">Username: (required)</label>
<input class="input1 hidethis" id="username" name="username" type="text" value="" />
<label>Email: (required)</label>
<input class="input1" id="email" name="email" type="text" value="" />
<br />
<label>Phone: (required)</label>
<input class="input1" id="phone" name="phone" type="text" value="" />
<label>Company: (required) </label>
<textarea class="input2" name="comments" id="comments" cols="" rows="1">
</textarea>
<br />
<input type="image" src="images/individualProducts/submit.png" alt="" value="" class="submit" />
</form>
和
/sendmail/send-mail-start.php
将像这样开始:<?php
if($_POST['username']!= "") {die("No spam");}
$date1=date("F d,Y");
$nameField=$_POST['name'];
$companyField=$_POST['company'];
$countryField=$_POST['country'];
... // Rest of your code