Após melhorar o código delas, e fazer uma checagem melhor, estou colocando aqui 2 funções bem úteis para serem utilizadas em sistemas de login, sistemas de newsletter, e outros recursos onde são necessários checar o nome do usuário e o email.
Função que valida email:
function validate_email( $email ) { return ( eregi( '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'. '@'. '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+\.'. '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $email ) ); }
A função retorna true/false, caso o email seja válido ou não.
Função que valida username:
function validate_username( $user_name ) { // Deve ter ao menos um caractere if( strspn( $user_name, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-" ) == 0 ) { return false; } // Deve conter todos os caracteres legais if( strspn( $user_name, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_" ) != strlen($user_name) ) { return false; } // Comprimento máximo e mínimo if( strlen($user_name) < 5 ) { return false; } if( strlen($user_name) > 25 ) { return false; } // Nomes ilegais if( eregi( "^((root)|(bin)|(daemon)|(adm)|(lp)|(sync)|(shutdown)|(halt)|(mail)|(news)|(uucp)|(operator)|(games)|(mysql)|(httpd)|(nobody)|(dummy)|(www)|(cvs)|(shell)|(ftp)|(irc)|(debian)|(ns)|(download))$", $user_name ) ) { return false; } if( eregi( "^(anoncvs_)$" , $user_name ) ) { return false; } return true; } ?>
Gostaria que alguém fizesse a modificação para suporte a espaços nesta função. Todas as alterações que tentei geraram erros. =\
Ela retorna true/false caso o username seja válido ou não.
Espero que elas sejam úteis, principalmente agora que segurança é algo vital em sistemas.
Ah... agora possuímos um fórum de avaliação de sistemas. Estas duas funções serão úteis para sistemas mais seguros.

[]s,