Bom dia, estou tendo uma baita problema que já tentei de tudo para resolver, fiquei o sab todo pesquisando e não consegui.
Meu problema é fazer com que o javascript leia a função “checarCPF($cpf)” em php (essa função vê se o cpf informado no formulário é valido ou não, com true ou false") para a função “validar()” no javascript informe o erro do formulário (se tiver erro informa se não prossiga)
Eu já tentei a biblioteca jquery com “$.ajax” (tentei fazer como entendi) e não consegui.
No código que estou mostrando abaixo foi o que chequei mais próximo, forem não com sucesso que esperava. Pois além de informar “cpf invalido” para todos os CPFs, até os validos, ele avança para próxima pagina.
Nesse código eu fiz uma variável em php ($ckCPF) receber true ou false (true para cpf valido) e depois no javascript a variável “EhCPF” recebe a variável “$ckCPF” ( var EhCpf = <?php $ckCPF; ?> ) apos receber o if(EhCpf) irá fazer a validação.
Desde já agradeço quem poder me ajudar.
<?php
function limpaCPF($cpf) {
return str_replace('-', '', str_replace('.', '', $cpf));
}
function checarCPF($cpf) {
$cpf = limpaCPF($cpf);
$checksum1 = 0; $checksum2 = 0;
for($i = 0; $i < 9; $i++) {
$checksum1 += (10 - $i) * $cpf[$i];
$checksum2 += (11 - $i) * $cpf[$i];
}
$checksum2 += 2*$cpf[9];
$resto1 = $checksum1 % 11;
$digito1 = $resto1 < 2 ? 0 : 11 - $resto1;
$resto2 = $checksum2 % 11;
$digito2 = $resto2 < 2 ? 0 : 11 - $resto2;
return $cpf[9] == $digito1 && $cpf[10] == $digito2;
}
function clean($input,$maxlength){
$input = substr($input,0,$maxlength);
$input = EscapeShellCmd($input);
return ($input);
}
?>
<html>
<head>
<title>Formulario de cadastro</title>
<script type="text/javascript" src="jquery-1.10.1.js"></script>
<script type="text/javascript">
function validar(){
var cpf =formulario.cpf.value;
var nome =formulario.nome.value;
var endereco =formulario.endereco.value;
var email =formulario.email.value;
var EhCpf = <?php $ckCPF; ?> ///////////////////////////// Meu problema
if(cpf == "" || cpf.legth < 15 ){
alert("prencha o campo cpf com o minimo de 1 e o maximo de 15 caracteres.");
formulario.cpf.focus();
return false;
}
if(EhCpf){
alert("O cpf possui numeros inválidos");
formulario.cpf.focus();
return false;
}
if(nome == ""|| nome.legth < 50 ){
alert("prencha o campo nome com o minimo de 1 e o maximo de 50 caracteres.");
formulario.nome.focus();
return false;
}
if(endereco == "" || endereco.legth < 50){
alert("prencha o campo endereço com o minimo de 1 e o maximo de 50 caracteres.");
formulario.endereco.focus();
return false;
}
if(email == "" || email.legth < 50){
alert("prencha o campo e-mail com o minimo de 1 e o maximo de 50 caracteres.");
formulario.email.focus();
return false;
}
}
</script>
</head>
<body>
<h1>Cadastro</h1>
<form name="formulario" method="post" action="cadastro.php" onsubmit= "return(validar());">
CPF: <input type="text" name="cpf" size=15><br><br>
Nome: <input type="text" name="nome" size=50><br><br>
Endereço: <input type="text" name="endereco" size=50><br><br>
E-mail: <input type="text" name="email" size=50><br><br>
<input type="submit" value="enviar">
</form>
<?php
$digitos = $_POST[cpf]; //////////////////////////// Meu problema
$diglimpo = limpaCPF($digitos);
$ckCPF = checarCPF($diglimpo);
?>
</body>
</html>