forms - 如何验证 Shopify 的“创建帐户”表单中的 2 个字段之间的文本输入不匹配?
问题描述
我正在尝试与充斥我的 Shopify“创建帐户”表单的垃圾邮件机器人作斗争。
假用户帐户总是使用相同拼写的随机“名字”和“姓氏”,所以如果我可以在“名字”和“姓氏”不匹配的情况下不执行提交,我想这可能会解决我的问题。
实现这一点的最简单方法是什么?任何意见,将不胜感激。
我有在 Shopify 中更改代码的工作知识,但我不是专业人士。
我已经尝试过地理 IP 阻止,但似乎该机器人正在通过我自己的(美国)获得访问权限,所以这不起作用。我还尝试添加一个必填复选框以在提交之前验证我们的条款的阅读,但无济于事,机器人勾选了它并且它们通过了。
我在下面包含了我们的 customers/register.liquid 页面。
{% layout settings.customer_layout %}
<div class="bump">
<section id="blacktop">
<div id="template">
<div id="customer">
<!-- Create Customer -->
<div id="create-customer" data-aos="flip-right">
<h1>Create an Account</h1>
<div class="template_header">
</div>
{% form 'create_customer' %}
{{ form.errors | default_errors }}
<input id="fname" type="text" name="confirm" value="" />
<div class="clearfix large_form">
<label for="first_name" class="login">First Name</label>
<input type="text" value="" name="customer[first_name]" id="first_name" class="large fnamer" size="30" />
</div>
<div class="clearfix large_form">
<label for="last_name" id="lname-reg" class="login">Last Name</label>
<input type="text" value="" name="customer[last_name]" id="last_name" class="large" size="30" />
</div>
<div class="clearfix large_form">
<label for="email" class="login">Email Address</label>
<input type="email" value="" name="customer[email]" id="email" class="large" size="30" />
</div>
<div class="clearfix large_form">
<label for="password" class="login">Password</label>
<input type="password" value="" name="customer[password]" id="password" class="large password" size="30" />
</div>
<input type="hidden" id="customer_tags" name="customer[tags]" value="Illuminati"/>
<div class="action_bottom">
<input id="create-btn" data-callback="onSubmit" class="btn" type="submit" value="Create">
<span class="note"><a href="/account/login">or Login</a></span>
</div>
<input type="hidden" name="return_to" value="/pages/products/#welcome"/>
{% endform %}
</div><!-- /#create-customer -->
</div>
</div>
</section>
<script>
var checker = document.getElementById('fname');
var sendbtn = document.getElementById('create-btn');
checker.onchange = function() {
sendbtn.disabled = !this.checked;
};
</script>
<style type="text/css">
input[name="confirm"]{
display: none;
}
</style>
</div>
希望这可以工作。我见过很多人在提交相同名称的相同机器人时发帖。新的“客户”从来没有对我们的商店做任何其他事情,比如尝试购买,但这是一个问题,主要是因为虚假账户的数量,再加上他们通过集成自动导入到 HubSpot 作为“销售线索”。
解决方案
您可以使用 Javascript 劫持表单上的提交。因此,如果用户单击提交或机器人单击提交,它将触发白痴检查。您可以检查名称字段并确定它们是否合法。如果没有,什么也不做。如果它们看起来合法,让提交发生并继续。
推荐阅读
- mongodb - 我无法获取当前日期之后的日期
- java - Maven 内部错误:org.eclipse.tycho.core.osgitools.OsgiManifestParserException:异常解析 OSGi MANIFEST
- r - 将每隔 30 分钟收集的数据舍入为设置的 30 分钟间隔
- c# - 如何用颜色填充 DataGridCell 取决于它包含 WPF 的值
- java - 未调用 FireStore OnFailureListener
- groovy - 在 SoapUI 中运行通用 groovy 脚本断言
- laravel - Laravel 表单请求验证方法名
- python - 如何确定存储在文件中的最大拼字游戏分数?
- php - 如何使用 PHP 的 include 连接到数据库
- javascript - 在javascript中解构时获取父母和孩子