0
I am trying to validate my password more accurate that is identical to the password confirm field, I am validating in php and using ajax to show error if the input value is incorrect. I have tried to compare using === more so far nothing, any hint?
html:
<tr>
<td><input type="password" id="senha" name="senha" placeholder="Senha" onBlur="Validate('senha', document.getElementById('senha').value);"><br><span id="campo_senha" class="error"></span></td>
</tr>
<tr>
<td><input type="password" id="confirmsenha" name="confirmsenha" placeholder="Confirme sua senha" onBlur="Validate('confirmsenha', document.getElementById('confirmsenha').value);"><br><span id="campo_confirmsenha" class="error"></span></td>
</tr>
JS/Ajax
function Validate(field, value){
if(window.XMLHttpRequest){
var xmlhttp = new XMLHttpRequest();
} else if(window.ActiveXObject){
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var urlget = "php/register.php?field="+field+"&value="+value;
var url = "php/register.php";
var params = "field="+field+"&value="+value;
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState === 1){
document.getElementById('campo_' +field+ '').innerHTML = '<font color="green">Verificando...</font>';
}
if(xmlhttp.readyState === 4 && xmlhttp.status === 200){
var resposta = xmlhttp.responseText;
document.getElementById('campo_'+ field + '').innerHTML = resposta;
}
};
xmlhttp.send(params);
}
PHP
$error = array(
"Campo deve ser preenchido.",
"Somente 20 caracteres são permitidos.",
"Somente letras e espaços são permitidas.",
"Formato de e-mail inválido.",
"Mínimo de 3 caracteres.",
"Somente 30 caracteres são permitidos.",
"Mínimo de 5 caracteres.",
"Somente letras e números são permitidos.",
"Senhas precisam ser idênticas."
);
$field = $_POST['field'];
$value = $_POST['value'];
$idfield = $_POST['id'];
$nome = "";
$sobrenome = "";
$email = "";
$senha = "";
$confirmsenha = "";
// Senha
if($field === "senha"){
$senha = $value;
if($senha === ""){
echo $error[0];
} else if(strlen($senha) > 20){
echo $error[1];
} else if(strlen($senha) < 5){
echo $error[6];
} else if(!preg_match("/^[a-zA-Z0-9]*$/", $senha)){
echo $error[7];
}
}
// Confirma senha
if($field === "confirmsenha"){
$confirmsenha = $value;
if($confirmsenha === ""){
echo $error[0];
} else if(strlen($confirmsenha) > 20){
echo $error[1];
} else if(strlen($confirmsenha) < 5){
echo $error[6];
} else if(!preg_match("/^[a-zA-Z0-9]*$/", $confirmsenha)){
echo $error[7];
} else if(!$confirmsenha == $senha){
echo $error[8];
}
}
The comparison seems to be right, but the variable
$senhais$senha = '', soon it will return error if the password is different from `` (nothing), which is the same error as the$error[0]that is triggered when you enter an empty die.– Inkeliz
I understood what you meant, but I don’t know how to pull the value for $password, because of the function, thank you.
– Leonardo Silva
I have a question, what do you want to do is not compare the password with the password confirmation? In your line of code I only see if the password and password confirmation is in the parameters you set. You wouldn’t have something like this: if($password===$confirmapassword) { echo "correct passwords"; } Else { echo "passwords don’t match"; ;}
– Simao Coutinho
You don’t have to go all this way. Just compare both in javascript... and when you submit the form, validate all entries normally, including password and password confirmation
– Daniel Omine
A question: The problem would not be the fact that php is
server-side, I mean, from what I understand, you’ve released the parameters for php to confirm. only php has already been read right? da umechoin some php variable and see when it appears or if it appears.– Andrei Coelho
@Daniel Omine is right, you better do the analysis before releasing for php.
– Andrei Coelho