- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
public static boolean isValidUser(String user)
{
if(user == null) return true;
int len = user.length();
if (len > 255) return false;
char c;
for(int i=0; i<len; i++)
{
c = user.charAt(i);
if (c <= ' ') return false;
if (c == ':') return false;
if (c == '@') return false;
if (c == '"') return false;
if (c == '>') return false;
if (c == '<') return false;
if (c == '/') return false;
if (c == '\'') return false;
if (c == '&') return false;
if (c == '\u077F') return false;
if (c == '\u0FFE') return false;
if (c == '\u0FFF') return false;
}
return true;
}
guest 24.02.2010 15:22 # −1
danilissimus 24.02.2010 16:07 # +1
ага, пройтись циклом по всем символам быстрее, чем просто использовать indexOf.
вот, что быстрее:
guest 24.02.2010 16:55 # 0
guest 24.02.2010 23:40 # 0
guest 27.02.2010 09:41 # +1
for(int i=0; i<len; i++)
{
c = user.charAt(i);
if (" :@"<>/\'&\u077F\u0FFE\u0FFF".indexOf(c) != -1)
return false;
}
turdman 24.02.2010 16:59 # +2
Тут уж либо работа по категориям символов (в крайнем случае старое доброе [a-z]), либо вообще в жопу такие ограничения.
И вообще набор символов напоминает говно-анти-XSS-SQLInjection
danilissimus 24.02.2010 17:28 # 0
из-за особенностей протокола.
например в IRC делимитером в пакетах служит пробел. поэтому его нельзя использовать в никах и.т.д. а другие символы можно. Jeti - jabber клиент.
turdman 24.02.2010 18:01 # 0
guest 24.02.2010 23:03 # 0
if (len > 255) return false;
"Извините, в вас много букв" ))
guest 24.02.2010 23:41 # 0
guest 25.02.2010 14:51 # 0
альзо, bool-shit detected
guest 25.02.2010 17:50 # 0
guest 28.02.2010 19:42 # 0
и код будет более читаемый