禁止管理员作为用户名

时间:2017-07-03 19:10:19

标签: php

我为注册帐户页面创建了一个功能,因此有人无法使用用户名admin或管理员注册。代码如下:

function forbidden($word){
$forbidden = array('Admin', 'admin', 'Administrator', 'administrator', 'admin1', 'Admin1', 'admin123', 'Admin123', 'admin123456', 'Admin123456', 'Administrator1', 'Administrator2', 
'Administrator3', 'admin3', 'admin4', 'Administrator123', 'administrator123', 'administrator1', 'administrator2', 'administrator123', 'administrator3', 'aDmin', 'adMin', 'ADMIN', 
'ADMINISTRATOR', 'admIn', 'admiN', 'ADmin', 'AdMiN', 'ADmin', 'ADMin', 'ADMIn', 'aDMin', 'ADministrator', 'aDministrator', 'adMinistrator','ADMinistrator', 'ADMInistrator', 'ADMINistrator', 
'ADMINistrator', 'ADMINIstrator', 'ADMINIStrator', 'ADMINISTrator','ADMINISTRator','ADMINISTRAtor','ADMINISTRATor','ADMINISTRATOr','ADMINISTRATOR_a','ADMINISTRATOR_b');

for($i=0; $i<=count($forbidden); $i++) {
        if(isset($forbidden[$i])){
            if( $word == $forbidden[$i] ){
            $check_forbitten = "true";
            return $check_forbitten;
            break;
            }
        }

}

}

我的问题是有更准确,更快捷的方法吗?

2 个答案:

答案 0 :(得分:10)

function forbidden($word) {
  return !preg_match('/admin/i', $word);
}

包含您定义的所有单词以及其他一些我想要过滤掉的单词。

也许有些微调,因为看起来你只想禁止管理员作为开始:

function forbidden($word) {
  return !preg_match('/^admin/i', $word);
}

请注意,这是返回布尔值true / false。如果你真的想要一个像你的例子中的字符串,这将有效:

function forbidden($word) {
  return (preg_match('/^admin/i', $word) ? 'false' : 'true');
}

答案 1 :(得分:3)

如果你想保留你的禁词数组,那么函数in_array()将是最好用的。除此之外,我会建议@rickdenhaan回答并使用正则表达式。您可以使用(\d)?(admin)(istrator)?(\d)?

function forbidden($word){
    $forbidden = array('Admin', 'admin', 'Administrator', 'administrator', 
        'admin1', 'Admin1', 'admin123', 'Admin123', 'admin123456', 'Admin123456', 
        'Administrator1', 'Administrator2', 
        'Administrator3', 'admin3', 'admin4', 'Administrator123', 
        'administrator123', 'administrator1', 'administrator2', 'administrator123', 
        'administrator3', 'aDmin', 'adMin', 'ADMIN', 
        'ADMINISTRATOR', 'admIn', 'admiN', 'ADmin', 'AdMiN', 'ADmin', 'ADMin', 
        'ADMIn', 'aDMin', 'ADministrator', 'aDministrator', 
        'adMinistrator','ADMinistrator', 'ADMInistrator', 'ADMINistrator', 
        'ADMINistrator', 'ADMINIstrator', 'ADMINIStrator', 
        'ADMINISTrator','ADMINISTRator','ADMINISTRAtor',
        'ADMINISTRATor','ADMINISTRATOr',
        'ADMINISTRATOR_a','ADMINISTRATOR_b');
    // word is forbidden
    return in_array($word, $forbidden));
}