iFull 0 Denunciar post Postado Maio 23, 2016 Beleza galera? Estou tentando fazer a validação do CPF, mas está dando um erro, não sei se fiz muito certo, depois de retornar a validação ele teria que fazer a busca no BD, e retornando sim ou não fazer outra ação :/ A validação do CPF está 100%, problema são nos IF/ELSE mesmo. Mas parece que ta zikado, vou postar o COD. <?php include 'header.php'; if (isset($_SESSION["cliente"])) { ?> <script> document.location.href="carrinho3.php"; </script> <?php /* @autor: Moacir Selínger Fernandes Qualquer dúvida é só mandar um email */ // Função que valida o CPF function validaCPF($cpf) { // Verifiva se o número digitado contém todos os digitos $cpf = str_pad(ereg_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT); // Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '11111111111' || $cpf == '22222222222' || $cpf == '33333333333' || $cpf == '44444444444' || $cpf == '55555555555' || $cpf == '66666666666' || $cpf == '77777777777' || $cpf == '88888888888' || $cpf == '99999999999') { return false; } else { // Calcula os números para verificar se o CPF é verdadeiro for ($t = 9; $t < 11; $t++) { for ($d = 0, $c = 0; $c < $t; $c++) { $d += $cpf{$c} * (($t + 1) - $c); } $d = ((10 * $d) % 11) % 10; if ($cpf{$c} != $d) { return false; } } return true; } } // Verifica se o botão de validação foi acionado if(isset($_POST['btvalidar'])) {// Adiciona o numero enviado na variavel $cpf_enviado, poderia ser outro nome, e executa a função acima $cpf_enviado = validaCPF($_POST['cpf']); // Verifica a resposta da função e exibe na tela if($cpf_enviado == true) { $cpf = $_POST["cpf"]; $objCliente = new Cliente(); $retorno = $objCliente->listar("where rcpf ='$cpf'"); if($retorno) { $_SESSION["cliente"] = $retorno[0]; ?> <script> document.location.href="carrinho3.php"; </script> <?php } else { $mensagem = "Certifique que você digitou um CPF válido, somente números."; } } else { $mensagem = ""; } else if($cpf_enviado == false) echo "CPF FALSO"; } ?> Obrigado pela atenção. Compartilhar este post Link para o post Compartilhar em outros sites
junior.vieira 16 Denunciar post Postado Maio 23, 2016 Poste a mensagem de erro, habilite as logs, posso estar falando besteira mas creio q se voc use else if() o php espera tbm um else final ...reforço posso estar falando besteira..mas poste a msg de error Compartilhar este post Link para o post Compartilhar em outros sites
iFull 0 Denunciar post Postado Maio 23, 2016 Poste a mensagem de erro, habilite as logs, posso estar falando besteira mas creio q se voc use else if() o php espera tbm um else final ...reforço posso estar falando besteira..mas poste a msg de error A mensagem é essa: Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\cpf.php on line 72 Compartilhar este post Link para o post Compartilhar em outros sites
junior.vieira 16 Denunciar post Postado Maio 23, 2016 você esta dando else...e depois else if..quando deveria ser o contrário Compartilhar este post Link para o post Compartilhar em outros sites
iFull 0 Denunciar post Postado Maio 23, 2016 você esta dando else...e depois else if..quando deveria ser o contrário Eu não entendi a lógica, Não seria o correto, porque eu dei IF {se for true=vai executar a busca no bd, ai tem os else's mas não fazem parte desse código? } ai depois vem o elseif ou else if? Compartilhar este post Link para o post Compartilhar em outros sites
junior.vieira 16 Denunciar post Postado Maio 23, 2016 <?php if ($a > $b) { echo "a is bigger than b"; } elseif ($a == $b) { echo "a is equal to b"; } else { echo "a is smaller than b"; } ?> Fonte: http://php.net/manual/pt_BR/control-structures.elseif.php Compartilhar este post Link para o post Compartilhar em outros sites
iFull 0 Denunciar post Postado Maio 23, 2016 <?php if ($a > $b) { echo "a is bigger than b"; } elseif ($a == $b) { echo "a is equal to b"; } else { echo "a is smaller than b"; } ?> Fonte: http://php.net/manual/pt_BR/control-structures.elseif.php Cara, ok. Mas funciona só com a validação. Porque depois que eu adicionei a busca no bd não funciona mais? codigo original é assim: <?php /* @autor: Moacir Selínger Fernandes @email: hassed@hassed.com Qualquer dúvida é só mandar um email */ // Função que valida o CPF function validaCPF($cpf) { // Verifiva se o número digitado contém todos os digitos $cpf = str_pad(ereg_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT); // Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '11111111111' || $cpf == '22222222222' || $cpf == '33333333333' || $cpf == '44444444444' || $cpf == '55555555555' || $cpf == '66666666666' || $cpf == '77777777777' || $cpf == '88888888888' || $cpf == '99999999999') { return false; } else { // Calcula os números para verificar se o CPF é verdadeiro for ($t = 9; $t < 11; $t++) { for ($d = 0, $c = 0; $c < $t; $c++) { $d += $cpf{$c} * (($t + 1) - $c); } $d = ((10 * $d) % 11) % 10; if ($cpf{$c} != $d) { return false; } } return true; } } // Verifica se o botão de validação foi acionado if(isset($_POST['btvalidar'])) {// Adiciona o numero enviado na variavel $cpf_enviado, poderia ser outro nome, e executa a função acima $cpf_enviado = validaCPF($_POST['cpf']); // Verifica a resposta da função e exibe na tela if($cpf_enviado == true) echo "CPF VERDADEIRO"; elseif($cpf_enviado == false) echo "CPF FALSO"; } ?> <html> <head> </head> <body> <form action="valida_cpf.php" method="post" name="cpf" id="cpf"> CPF: <label> <input name="cpf" type="text" id="cpf" size="11" maxlength="11"> </label> <label> <input name="btvalidar" type="submit" id="btvalidar" value=" Validar "> </label> </form> </body> </html> E só assim, funciona perfeito. Compartilhar este post Link para o post Compartilhar em outros sites
junior.vieira 16 Denunciar post Postado Maio 23, 2016 amigo, pensa comigo....você no primeiro código lá em cima está validando duas vezes se o cpf é falso... if(cpf == true){ echo ok; } else{ echo 'logicamente, vai exibir essa msg se o cpf for falso'; } else if(cpf == falso de novo??){ echo Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\cpf.php on line 72.'<br>'; echo "Não gostei disso, é errado!"; } o que você quer é uma tratativa de erro, como no exemplo do usuário usar caracteres que não sejam números...coloque tudo no else: if($cpf) { echo 'cpf ok'; }else{ echo 'cpf inválido, entre apenas com números, preencha o cpf de forma corrida e sem caracteres'; } Compartilhar este post Link para o post Compartilhar em outros sites
iFull 0 Denunciar post Postado Maio 23, 2016 amigo, pensa comigo....você no primeiro código lá em cima está validando duas vezes se o cpf é falso... if(cpf == true){ echo ok; } else{ echo 'logicamente, vai exibir essa msg se o cpf for falso'; } else if(cpf == falso de novo??){ echo Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\cpf.php on line 72.'<br>'; echo "Não gostei disso, é errado!"; } o que você quer é uma tratativa de erro, como no exemplo do usuário usar caracteres que não sejam números...coloque tudo no else: if($cpf) { echo 'cpf ok'; }else{ echo 'cpf inválido, entre apenas com números, preencha o cpf de forma corrida e sem caracteres'; } Ok, vou fazer isso, obrigado pela sua atenção amigão! Te dou um retorno se consegui aqui blz? Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
junior.vieira 16 Denunciar post Postado Maio 23, 2016 beleza, boa sorte aí man, poste sim. Compartilhar este post Link para o post Compartilhar em outros sites