首页 > 解决方案 > 如何验证 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 作为“销售线索”。

标签: formsshopifyliquid

解决方案


您可以使用 Javascript 劫持表单上的提交。因此,如果用户单击提交或机器人单击提交,它将触发白痴检查。您可以检查名称字段并确定它们是否合法。如果没有,什么也不做。如果它们看起来合法,让提交发生并继续。


推荐阅读