如何将HTML表单中的单词列入黑名单?

时间:2019-03-30 09:11:07

标签: javascript php html

我想知道如何将某些单词从表单中输入黑名单。具体来说,是用户名字段。我不确定是否需要访问PHP / JS文件,但是访问这些文件的权限有限。

<div class="form-group">
  <label for="username" class="control-label">{{ lang('signup.username') }}</label>
  <input type="text" class="form-control" id="username" value="{{ data['login'] }}" name="RegistrationForm[login]" placeholder="Enter username">'===
</div>
{% if name_fields %}
<script>

function is_banned_name($data) {
           $banned_names = array(
               'socialwizards', 'socialwizard', 'bulkfollow', 'bulkfollows'
           );


           foreach($banned_names as $banned_name) {

               $pattern = '/('.$banned_name.')/';

               $match = preg_match($pattern,$data);

               if($match) {

                   return true;

               }

           }

           return false;
       }

  if(is_banned_name($_POST['username'])) {
                  <div class="alert alert-dismissible alert-danger {% if site['rtl'] %} rtl-alert {% endif %}">
                    <button type="button" class="close" data-dismiss="alert">&times;</button>
                    {{ errorMessage }}
</div>
}
</script

(将其添加到我的表格末尾)

2 个答案:

答案 0 :(得分:2)

由于用户可以操纵或禁用JavaScript,因此使用javascript使用PHP并不安全。


function is_banned_name($data) {
           $banned_names = array(
               'admin', 'test', 'user', 'fake', 'hack', 'error'
           );


           foreach($banned_names as $banned_name) {

               $pattern = '/('.$banned_name.')/';

               $match = preg_match($pattern,$data);

               if($match) {

                   return true;

               }

           }

           return false;
       }

那你可以说

if(is_banned_name($_POST['username'])) {
 // do something
}

答案 1 :(得分:0)

您可以使用JavaScript进行操作,但不建议这样做。以下代码是JavaScript代码如何执行此操作的示例。如果名称包含禁止的名称,则代码将返回true。

function is_banned_name(str) { 
var banned_names = ['admin', 'hacker', 'test', 'user', 'free']; banned_names.forEach(element => { 
if(str.match(element)) { return true; } 
}); 
} ```