CarllosRA Postado Dezembro 4, 2020 Compartilhar Postado Dezembro 4, 2020 (editado) Salve, Salve galera! Peneirando no GitHub, achei este Hook que alem de validar CPF/CNPJ ele verifica se já tem cadastrado no sistema e informa, porem, não faz nada ao ser usado. Alguém ai que manja consegue dar uma luz do que pode ser? Segue abaixo o código <?php // Hook por Joel Emanoel- https://webnity.com.br use WHMCS\Database\Capsule; function validacao_cpf_cnpj($vars){ /* EDITAR A PARTIR DAQUI */ $customfield_cpf_cnpj = 1; $mensagem_erro_invalido = "O CPF/CNPJ informado não é válido."; $mensagem_erro_duplicado = 'Já existe uma conta cadastrada com esse CPF/CNPJ. Por favor <a href="login.php">faça login</a>.'; /* NÃO EDITAR A PARTIR DAQUI */ $pdo = Capsule::connection()->getPdo(); $cpf_cnpj = preg_replace("/[^0-9]/", "", $vars["customfield"][$customfield_cpf_cnpj]); if($cpf_cnpj!="1" AND !$_SESSION['adminid']){ if(!validaCPF($cpf_cnpj) && !validaCNPJ($cpf_cnpj)){ $return[] = $mensagem_erro_invalido; }elseif(!$_SESSION["uid"] AND !$_SESSION['adminid']){ $sql = $pdo->query("SELECT * FROM tblcustomfieldsvalues WHERE fieldid = '{$customfield_cpf_cnpj}'"); while($exibir = $sql->fetch()){ if(preg_replace("/[^0-9]/", "", $exibir["value"]) == $cpf_cnpj){ $return[] = $mensagem_erro_duplicado; } } }elseif($_SESSION["uid"]){ $id = $_SESSION["uid"]; $sql = $pdo->query("SELECT * FROM tblcustomfieldsvalues WHERE fieldid = '{$customfield_cpf_cnpj}' AND relid != '{$id}'"); while($exibir = $sql->fetch()){ if(preg_replace("/[^0-9]/", "", $exibir["value"]) == $cpf_cnpj){ $return[] = $mensagem_erro_duplicado; } } } } return $return; } if(!function_exists("validaCPF")){ function validaCPF($cpf = null){ if(empty($cpf)){ return false; } $cpf = preg_replace("/[^0-9]/", "", $cpf); $cpf = str_pad($cpf, 11, "0", STR_PAD_LEFT); if(strlen($cpf) != 11){ return false; }elseif($cpf == "00000000000" || $cpf == "11111111111" || $cpf == "22222222222" || $cpf == "33333333333" || $cpf == "44444444444" || $cpf == "55555555555" || $cpf == "66666666666" || $cpf == "77777777777" || $cpf == "88888888888" || $cpf == "99999999999") { return false; }else{ 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; } } } if(!function_exists("validaCNPJ")){ function validaCNPJ($cnpj = null){ if(empty($cnpj)){ return false; } $cnpj = preg_replace("/[^0-9]/", "", $cnpj); $cnpj = str_pad($cnpj, 14, "0", STR_PAD_LEFT); if(strlen($cnpj) != 14){ return false; }elseif($cnpj == "00000000000000" || $cnpj == "11111111111111" || $cnpj == "22222222222222" || $cnpj == "33333333333333" || $cnpj == "44444444444444" || $cnpj == "55555555555555" || $cnpj == "66666666666666" || $cnpj == "77777777777777" || $cnpj == "88888888888888" || $cnpj == "99999999999999") { return false; }else{ $j = 5; $k = 6; $soma1 = ""; $soma2 = ""; for ($i = 0; $i < 13; $i++) { $j = $j == 1 ? 9 : $j; $k = $k == 1 ? 9 : $k; $soma2 += ($cnpj{$i} * $k); if($i < 12){ $soma1 += ($cnpj{$i} * $j); } $k--; $j--; } $digito1 = $soma1 % 11 < 2 ? 0 : 11 - $soma1 % 11; $digito2 = $soma2 % 11 < 2 ? 0 : 11 - $soma2 % 11; return (($cnpj{12} == $digito1) and ($cnpj{13} == $digito2)); } } } add_hook("ClientDetailsValidation", 1, "validacao_cpf_cnpj"); Editado Dezembro 4, 2020 por CarllosRA 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Administração AngelCosta Postado Dezembro 4, 2020 Administração Compartilhar Postado Dezembro 4, 2020 Oi, Carlos, deixa também o link de onde tirou para que possamos dar crédito ao autor, ok? /* EDITAR A PARTIR DAQUI */ $customfield_cpf_cnpj = 1; $mensagem_erro_invalido = "O CPF/CNPJ informado não é válido."; $mensagem_erro_duplicado = 'Já existe uma conta cadastrada com esse CPF/CNPJ. Por favor <a href="login.php">faça login</a>.'; $customfield_cpf_cnpj => para você trocar o 1 pelo ID do campo referente ao CPF no seu WHMCS. O código acima verifica se o CPF é válido. Não no sentido de estar na base da Receita, mas sim que trata-se de um número que bate com a "fórmula" que gera CPFs. Ele verifica se no seu WHMCS já existe este mesmo CPF em algum outro cliente. Esse código é chamado sempre que é preciso "validar" os dados do cliente (atualização, criação). 0 Citar 'Cause he's my best friend, he's my pal. He's my homeboy, my rotten soldier. He's my sweet cheese. My good-time boy. Link para o comentário Compartilhar em outros sites More sharing options...
CarllosRA Postado Dezembro 5, 2020 Autor Compartilhar Postado Dezembro 5, 2020 9 minutos atrás, Administração disse: Oi, Carlos, deixa também o link de onde tirou para que possamos dar crédito ao autor, ok? /* EDITAR A PARTIR DAQUI */ $customfield_cpf_cnpj = 1; $mensagem_erro_invalido = "O CPF/CNPJ informado não é válido."; $mensagem_erro_duplicado = 'Já existe uma conta cadastrada com esse CPF/CNPJ. Por favor <a href="login.php">faça login</a>.'; $customfield_cpf_cnpj => para você trocar o 1 pelo ID do campo referente ao CPF no seu WHMCS. O código acima verifica se o CPF é válido. Não no sentido de estar na base da Receita, mas sim que trata-se de um número que bate com a "fórmula" que gera CPFs. Ele verifica se no seu WHMCS já existe este mesmo CPF em algum outro cliente. Esse código é chamado sempre que é preciso "validar" os dados do cliente (atualização, criação). Olá@Administração, Já coloquei os créditos no código Sim sei que é para validar o CPF com base na formula. NO $customfield_cpf_cnpj o 1 já é o ID do campo em meu sistema Ao fazer um teste ele simplesmente não valida nada nem a formatação muito menos consultar na base de dados se já existe. 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Administração AngelCosta Postado Dezembro 5, 2020 Administração Compartilhar Postado Dezembro 5, 2020 Uai, não é o @Joel Emanoel aqui do fórum? 0 Citar 'Cause he's my best friend, he's my pal. He's my homeboy, my rotten soldier. He's my sweet cheese. My good-time boy. Link para o comentário Compartilhar em outros sites More sharing options...
Joel Emanoel Postado Dezembro 5, 2020 Compartilhar Postado Dezembro 5, 2020 1 minuto atrás, Administração disse: Uai, não é o @Joel Emanoel aqui do fórum? Sou eu mesmo! 8 minutos atrás, CarllosRA disse: Olá@Administração, Já coloquei os créditos no código Sim sei que é para validar o CPF com base na formula. NO $customfield_cpf_cnpj o 1 já é o ID do campo em meu sistema Ao fazer um teste ele simplesmente não valida nada nem a formatação muito menos consultar na base de dados se já existe. Me envia o link por DM que eu te auxilio. 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Administração AngelCosta Postado Dezembro 5, 2020 Administração Compartilhar Postado Dezembro 5, 2020 Depois não esqueçam de deixar a resposta aqui depois. 0 Citar 'Cause he's my best friend, he's my pal. He's my homeboy, my rotten soldier. He's my sweet cheese. My good-time boy. Link para o comentário Compartilhar em outros sites More sharing options...
CarllosRA Postado Dezembro 5, 2020 Autor Compartilhar Postado Dezembro 5, 2020 15 minutos atrás, Administração disse: Uai, não é o @Joel Emanoel aqui do fórum? mundão pequeno né? kkkkkkkkk 13 minutos atrás, Joel Emanoel disse: Sou eu mesmo! Me envia o link por DM que eu te auxilio. @Joel Emanoel, qual link você quer que eu mande? 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
clay Postado Dezembro 5, 2020 Compartilhar Postado Dezembro 5, 2020 Tá funcionando esse Hook ainda? 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Joel Emanoel Postado Dezembro 5, 2020 Compartilhar Postado Dezembro 5, 2020 5 horas atrás, clay disse: Tá funcionando esse Hook ainda? Sim. Vou verificar se está na ultima versão. 5 horas atrás, CarllosRA disse: mundão pequeno né? kkkkkkkkk @Joel Emanoel, qual link você quer que eu mande? Link do seu WHMCS. 1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
CarllosRA Postado Dezembro 5, 2020 Autor Compartilhar Postado Dezembro 5, 2020 14 horas atrás, Joel Emanoel disse: Sim. Vou verificar se está na ultima versão. Link do seu WHMCS. @Joel Emanoel, já mandei lá no MP 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.