• 0
Sign in to follow this  
rxhxtx

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

Question

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!!!

Edited by rxhxtx
problema resolvido

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 0

O mais fácil é fazer em dois patterns diferentes:
![\d]{3}\.?[\d]{3}\.?[\d]{3}\-?[\d]{2}$
^[a-z0-9._%+-][email protected][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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

 

Share this post


Link to post
Share on other 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 .-   ?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this