Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
MAuVRiL

[Resolvido] cpf

Recommended Posts

Gostaria de validar o cpf antes de salvar, mas não sei o que ta dando de errado!

<?php

require "../conexaoBD.php";

/* "pega" os dados digitados no form, através do método POST. */
if (isset($_POST['Enviar'])) {
$nome = $_POST['nome'];
$data_nasc = $_POST['data_nasc'];
$CPF = $_POST['cpf'];
$endereco = $_POST['endereco'];
$telefone = $_POST['telefone'];
$email = $_POST['email'];
$foto = $_POST['foto'];

/*criando funcao pra validar cpf*/
function validacao($CPF)
{
$CPF = preg_replace("/[^0-9]/", "", $CPF);
$digitoum = 0;
$digitodois = 0;

for ($inc = 0, $disc = 10; $inc <= 8; $disc--, $inc++) {
$digitoum += $CPF[$inc] * $disc;
}
for ($i = 0, $d = 11; $i <= 9; $d--, $i++) {
if (str_repeat($i, 11) == $CPF) {
return false;
}
$digitodois += $CPF[$i] * $d;
}
$calculoum = (($digitoum%11) < 2) ? 0 : 11 - ($digitoum%11);
$calculodois = (($digitodois%11) < 2) ? 0 : 11 - ($digitodois%11);

if ($calculoum <> $CPF[9] || $calculodois <> $CPF[10]) {
return false;
}
return true;
}

if (validacao($CPF)) {
echo 'cpf válido';
} else {
echo 'cpf inválido';
}

//Montando o comando SQL que será armazenado em uma string;
$sqlinsert = "INSERT INTO cliente (nome, data_nasc, cpf, endereco, telefone, email, foto)
VALUES('$nome','$data_nasc','$CPF','$endereco','$telefone', '$email', '$foto')";
//Inserindo os dados na Tabela "dados" através de comandos MySQL.*/
mysql_query($sqlinsert) or die("Não foi possível inserir os dados. Erro: " . mysql_error());

mysql_close($conn);
alert ('Cadastrado com sucesso');
}
?>

<section class="conteudo_principal">
<article>
<form action="cadastro_cliente.php" method="post" name="formulario">
<input id="nome" type="text" name="nome" placeholder="nome completo" autofocus><br />
<input id="data_nasc" type="date" name="data_nasc"><br />
<input id="cpf" type="text" name="cpf"><br />
<input id="endereco" type="text" name="endereco" placeholder="Endereço atual"><br />
<input id="telefone" type="text" name="telefone" placeholder=""><br />
<input id="email" type="email" name="email" placeholder=""><br />
<input id="foto" type="text" name="foto" placeholder=""><br />

<input id="botaocadastro" type="button" name="Enviar" value="Cadastrar">

</form>
</article>
</section>

<script type="text/javascript" src="../js/script.js"></script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual exatamente é o erro?

provavelmente essa função tem erros..

use este:

salve esse código em com o nome de function_cpf.php


function verificacpf($cpf){
$s = $cpf;
$c = substr($s, 0, 9);
$dv = substr($s, 9, 2);
$d1 = 0;
$v = false;

for ($i = 0; $i < 9; $i++){
$d1 = $d1 + substr($c, $i, 1) * (10 - $i);
}
if($d1 == 0){
return "CPF invalido!";
$v = true;
}
$d1 = 11 - ($d1 % 11);
if($d1 > 9){
$d1 = 0;
}
if(substr($dv, 0, 1) != $d1){
return "CPF invalido!";
$v = true;
}
$d1 = $d1 * 2;
for ($i = 0; $i < 9; $i++){
$d1 = $d1 + substr($c, $i, 1) * (11 - $i);
}
$d1 = 11 - ($d1 % 11);
if($d1 > 9){
$d1 = 0;
}
if(substr($dv, 1, 1) != $d1){
return "CPF invalido!";
$v = true;
}
if(!$v){
return "CPF valido";
}
}

No seu arquivo onde recebe os dados php.. chame a função..



require 'function_cpf.php';

verificacpf($cpf); //coloque a variável do cpf

Compartilhar este post


Link para o post
Compartilhar em outros sites

só colocar a instrução sql dentro de um if...


if(verificacpf($cpf)){
instrução sql
}else{
mensagem de erro
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Descobri o motivo pelo qual não funcionava a condição, é que eu estava cadastrando em outro arquivo através do ajax!

As duas validações estão funcionando!


<?php
$nome = $_GET['nome'];
$data_nasc = $_GET['data_nasc'];
$cpf = $_GET['cpf'];
$endereco = $_GET['endereco'];
$telefone = $_GET['telefone'];
$email = $_GET['email'];
$foto = $_GET['foto'];

require "funcaocpf.php";

if (validacao($cpf)) {
echo 'cpf válido';
} else {
die("Não foi possível inserir os dados. Erro: " . mysql_error());
}

$con = mysql_connect('localhost','root','');
mysql_select_db( 'academia', $con);
$sql = "INSERT INTO cliente(cod_cliente,nome,data_nasc, cpf, endereco, telefone, email, foto)
values (null, '$nome', '$data_nasc', '$cpf', '$endereco', '$telefone', '$email', '$foto')";
$result = mysql_query($sql);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×