2
respostas

Validação de usuário

Boa noite,

Estou tendo problemas para validar um usuário que só pode digitar letras e números. Não pode ter caracteres especiais. Segue abaixo o código:

<?php

$username='fernando%$';

if (preg_match('/^[a-zA-Z0-9]/', $username)) {

echo 'Username OK!';

} else {

echo 'Username tem caracteres inválidos...'; }

Com essa lógica, está imprimindo "Username OK!", mas deveria imprimir "Username tem caracteres inválidos...".

Como corrigir o código?

2 respostas

Boa noite Jovem, a questão é que a função "preg_match" retorna 1 quando acha um caractere especial. O certo serio o código ser assim:

<?php

$username='fernando%$';
$var = preg_match('/^[a-zA-Z0-9]/', $username);
print_r($var);
if (preg_match('/^[a-zA-Z0-9]/', $username)) {
    echo 'Username tem caracteres inválidos...'; 
} else {
      echo 'Username OK!';

}

Só trocar a ordem dos echos.

Se essa resposta respondeu seu questionamento, marque ela como resposta para o tópico.

Não funcionou. Quando eu mudo a variável para $username='fernando', sem caracteres especiais, aparece a mensagem "Username tem caracteres inválidos...". O problema continua sendo o mesmo, mas ao contrário.