如何验证Shopify的“创建帐户”表单中2个字段之间的文本输入不匹配?

时间:2019-04-05 22:20:07

标签: forms shopify liquid

我正试图打击淹没我的Shopify“创建帐户”表格的垃圾邮件机器人。

伪造的用户帐户始终使用相同的相同拼写的随机“名字”和“姓氏”,因此,如果我不能以“名字”和“姓氏”不匹配的条件执行提交, ,我认为这可以解决我的问题。

实现此目的最简单的方法是什么?任何建议将不胜感激。

我具有在Shopify中修改代码的工作知识,但是我不是专业人士。

我已经尝试过Geo-IP阻止,但是该漫游器似乎正在通过自己的(美国)获得访问权限,因此无法正常工作。我还尝试添加一个必填复选框,以在提交之前验证我们的条款是否读懂,但无济于事,该机器人将其打勾并通过。

我在下面添加了我们的customer / 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”作为“销售线索”。

1 个答案:

答案 0 :(得分:0)

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