Ir para conteúdo
Fórum Script Brasil
  • 0

(resolvido)configurando PATTERN- Campo de login com Email ou CPF


rxhxtx

Pergunta

Boa tarde!

 

Estou batendo a cabeça numa configuração simples, porém que foge do meu conhecimento, andei pesquisando na internet, mas não encontrei uma solução que funcionasse na minha pagina.

 

 

Preciso apenas configurar o pattern do input para receber dados tanto de email, quanto de cpf

 

para simplificar meu sistema, limitei meu usuario a cadastrar apenas os numeros do CPF, porem como meu sistema permite que o usuario se logue pelo email ou pelo cpf, não conseguigo configurar o pattern do login

 

eu gostaria que meu pattern permitisse apenas letras e numeros e FACULTATIVO o "@" e "."

 

mas ai eu so estou conseguindo fazer sem o "@" e "." ou com "@" e "."

 

esse facultativo que não sei como colocar dentro do pattern. 

 

 

Existe essa possibilidade ou teria que ser por javascript mesmo?

 

 

alguém me da uma luz!!!!

 

 

o meu sonho seria um campo que conseguisse diferenciar se esta sendo preenchido como [caractere]@[caractere].[caractere] ou [3car].[3car].[3car]-[2ca], mas isso é muito dificil, estou errado?

não tenho ideia se isso é possivel ou como poderia ser feito, esse foi o principal motivo de eu limitar o usuario a cadastrar somente numeros (sei que existe como fazer um "editar" na hora do POST, mas por enquanto meus estudos não chegaram ate ai)

 

 

muito obrigado!!!

Editado por rxhxtx
problema resolvido
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

O mais fácil é fazer em dois patterns diferentes:
![\d]{3}\.?[\d]{3}\.?[\d]{3}\-?[\d]{2}$
^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$

Assim ele aceita cfp com e sem pontuação mas o email deve ter o @ obrigatoriamente

Mas se esse campo é só para verificar login e senha, a sua única preocupação deve ser SQL Injection certo?
porque sendo assim se proteje do SQL Injection com a linguagem de Back End e o form envia do jeito que está e depois só retorna erro de usuário inválido, assim mais pra frente se você quiser fazer login por RG, ou qualquer outra coisa, não precisa mexer no código

Link para o comentário
Compartilhar em outros sites

  • 0

obrigado pelo retorno,

a proteção esta sendo feita "por tras dos panos",

essa minha configuração é meramente estética mesmo e fiquei matutando se era possivel, ai você sabe ne...

mas voltando ao problema,

como faço para colocar 2 patterns no mesmo input? ou essa solução seria apenas para dois inputs e eu entendi errado?

 

se não der certo, não tem problema, pois vou usar o str_replace, mas queria deixar uma estetica mais intuitiva para o usuario

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia!

aqui ta tudo funcionando, a msg customizada em caso de caractere invalido, o envio, o bootstrap... tudo ok.. so ta faltando o pattern correto

<form action="login.php" class="login100-form validate-form" method="POST">
<div class="wrap-input100 validate-input m-t-0 m-b-35" data-validate = "Preencha este campo!">
						<input class="input100" type="text" name="username" pattern="[a-zA-Z0-9]+" oninvalid="setCustomValidity('CONFIGURAR O PATTERN' )" onchange="try{setCustomValidity('')}catch(e){}" title="E-Mail ou CPF (Somente números)">
						<span class="focus-input100" data-placeholder="E-Mail ou CPF"></span>
					</div>
  <div class="container-login100-form-btn">
						<button class="login100-form-btn">Acessar</button>
					</div>
  </form>

 jogando para o login 

 

<?php 
			if (func::checkLoginState($dbh))
			{
				header("location:painel.php");
			}
			
		if(empty($_POST['username']) || empty($_POST['username'])) {
			//$_session com msg de erro
					include_once("content_form.php");
		}
			if (isset($_POST['username']) && isset($_POST['password']))
			{
				$query = "SELECT * FROM users WHERE (user_username = :username or user_cpf = :username) AND user_password = :password";

				$username = $_POST['username'];
				$password = $_POST['password'];
              				
				$userslash = addslashes($username);
				$passslash = addslashes($password);

				$stmt = $dbh->prepare($query);
				$stmt->execute(array(':username' => $userslash,
									 ':password' => $passslash));

				$row = $stmt->fetch(PDO::FETCH_ASSOC);

				if ($row['user_id'] > 0)
				{
					//func::salvaAcesso 
					
					// $redirect = URL de onde veio o usuario
					//header("location:".$redirect."");					
				}else{
					// $_session com msg de erro
					include_once("content_form.php");			
					}
			}
 ?>

 

tudo funcionando tambem, mas essa questao do email possuir "." e o CPF também esta me quebrando as pernas

pois se eu tiro o . com o str, vai dar pau no email 

 

 

A função 

checkLoginState($dbh)

vou jogar para a pagina onde contem o formulário, não faz sentido deixa-la onde confere o login, mas por enquanto está ai só para eu acertar 100% o formulário e então eu jogo lá.. só para minha propria organizacao mesmo

 

Link para o comentário
Compartilhar em outros sites

  • 0

perfeito!!!

funcionou redondinho!!!!

muito obrigado mais uma vez amigo!!

 

 

só para eu entender o codigo...

 \d seria para dizer que somente numeros na {quantidade} ou [letras e numeros #essa parte não entedi,seria para dizer que qualquer quantia?# ] + obrigatoriamente um @ junto com um [letras e numeros #essa parte não sei#] + obrigatoriamente um ponto seguido por somente letras na quantidade entre 2 e 4... correto?

 

o que seria o ._%+- e o .-   ?

Link para o comentário
Compartilhar em outros sites

  • 0
8 minutos atrás, rxhxtx disse:

\d seria para dizer que somente numeros na {quantidade}

Exato

8 minutos atrás, rxhxtx disse:

[letras e numeros #essa parte não entedi,seria para dizer que qualquer quantia?# ] +

Tudo o que está entre colchetes define os caracteres permitidos, o + depois representa 1 ou mais caracteres

9 minutos atrás, rxhxtx disse:

obrigatoriamente um @

Exato

9 minutos atrás, rxhxtx disse:

[letras e numeros #essa parte não sei#] +

Mesma coisa do anterior

9 minutos atrás, rxhxtx disse:

obrigatoriamente um ponto seguido por somente letras na quantidade entre 2 e 4

Perfeito

10 minutos atrás, rxhxtx disse:

o que seria o ._%+- e o .-   ?

Caracteres permitidos naquela posição

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...