1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Erro no meu script PHP

Discussão em 'Web Development' iniciada por Luan Potter, 8 de Junho de 2009. (Respostas: 14; Visualizações: 878)

  1. Já posetei isso em vários fóruns, então resolvi postar aqui também.
    Criei um script simples em php para verificar se o cpf de uma pessoa está certo, de acordo com as regras deste site:
    http://www.pontosevirgulas.hpg.com.br/curiosos/cpf_falso.htm
    Criei duas páginas, uma com o form (cpf.php) e outra que processa e exibe o resultado (final.php).
    cpf.php (pode baixar em txt aqui se quiser)
    Código:
    <html>
    <head>
    <title>Teste</title>
    </head>
    <body>
    <form action="final.php" method="post">
    Digite os primeiros nove dígitos: <input type="text" maxlength="1" name="v1"><input type="text" maxlength="1" name="v2"><input type="text" maxlength="1" name="v3"><input type="text" maxlength="1" name="v4"><input type="text" maxlength="1" name="v5"><input type="text" maxlength="1" name="v6"><input type="text" maxlength="1" name="v7"><input type="text" maxlength="1" name="v8"><input type="text" maxlength="1" name="v9">
    <input type="submit" value="Vai">
    </form>
    </body>
    </html>
    final.php (pode baixar em txt aqui se quiser)
    Código:
    <html>
    <head>
    <title>Resultado</title>
    </head>
    <body>
    <? 
    $f1 = $v1 * $v9;
    $f2 = $v2 * $v8;
    $f3 = $v3 * $v7;
    $f4 = $v4 * $v6;
    $f5 = $v5 * $v5;
    $f6 = $v6 * $v4;
    $f7 = $v7 * $v3;
    $f8 = $v8 * $v2;
    $f9 = $v1 * $v9;
    $fa = $f1 + $f2 + $f3 + $f4 + $f5 + $f6 + $f7 + $f8 + $f9; 
    $fb1 = fmod($fa, 11);
    $g1 = $fb1 * $v9;
    $g2 = $v1 * $v8;
    $g3 = $v2 * $v7;
    $g4 = $v3 * $v6;
    $g5 = $v4 * $v5;
    $g6 = $v5 * $v4;
    $g7 = $v6 * $v3;
    $g8 = $v7 * $v2;
    $g9 = $v8 * $v1;
    $g10 = $v9 * $fb1;
    $ga = $g1 + $g2 + $g3 + $g4 + $g5 + $g6 + $g7 + $g8 + $g9 + $g10;
    $gb1 = fmod($ga, 11);
    if ($fb1 == "10") {
    $fb1 = 0;
    }
    if ($gb1 == "10") {
    $gb1 = 0;
    }
    ?>
    CPF: <? echo $v1.$v2.$v3.$v4.$v5.$v6.$v7.$v8.$v9; ?><br>
    Dígitos de confirmação: <? echo $fb1.$gb1; ?>
    </body>
    </html>
    .
    Acontece que, quando rodo no localhost, aparece:
    CPF:
    Dígitos de confirmação:
    E quando rodo no meu site em construção, aparece:
    CPF:
    Dígitos de confirmação: 00
    Mesmo quando não era para ser 00.
    Gostaria de saber qual é o problema. Obrigado
     
    Última edição: 12 de Junho de 2009
  2. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Em vez de $v*, não será $_POST["v*"]?
     
  3. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    No final.php, onde tens $v1 até $v9, experimenta trocar por $_POST["v1"] até $_POST["v9"].
     
  4. Continuou com o mesmo erro
     
  5. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    No cpf.php, onde tens name="v1" até name="v9", acrescenta em cada campo uma propriedade id idêntica, id="v1" a id="v9".
     
  6. K0mA

    K0mA Power Member

    Em $f1 = $1 * $9; onde é que defines $1 e $9 ?
    R: em lado nenhum!

    Pelo que vi do site o que tu queres é

    $f1 = $_POST["v1"] * 9;
    $f2 = $_POST["v2"] * 8;
    ....


    E em $g1 = $fb1 * $9;

    Não será

    $g1 = $fb1 * 9 ?

    Em $g2 = $1 * $8;

    não será

    $g2 = $_POST["v2"] * 8;
    $g3 = $_POST["v2"] * 7;
    ....

    Eu penso que não ideia do que estás a fazer aprende PHP primeiro.
    Mesmo assim com o que disse já deves conseguir ou então define o que é $1 $2 $3 ....
     
  7. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Onde é que estás a ver $1 a $9? o.O
     
  8. K0mA

    K0mA Power Member

    Ele trocou por v1 v2 ...
     
  9. Morphine0225

    Morphine0225 Power Member

    <form action="final.php" method="post">

    fianl.php... ??


    Cumps
     
  10. final.php é o nome da página a qual processa o resultado do form
     
  11. K0mA

    K0mA Power Member

    Luan Potter
    Descreve aqui no forum o procedimento para verficar o cpf e talvez possa ajudar.
     
  12. Morphine0225

    Morphine0225 Power Member

    Eu apenas disse isto porque tens o final mal escrito.. A minha dúvida é apenas se te enganaste a escrever aqui ou se fizeste copy paste do teu ficheiro e ele não trabalhar por ter o nome mal escrito..lol

    Cumps,
    Morphine0225
     
  13. Não, o nome está certo, foi erro de digitação mesmo, já arrumei.

    Pegeui desse site:
    Pontos e Vírgulas
    "Identificar CPF falso não é difícil
    O CPF é composto por 11 números. Nove para a inscrição e dois para controle. Há regras para definir tais números. O primeiro ponto para a identificação do CPF diz respeito ao local onde foi obtido. Se uma pessoa tirou o documento em Brasília, o número que estiver escrito imediatamente anterior ao traço ou barra do controle, tem obrigatoriamente que ser 1(um). Se o CPF foi tirado no Rio de Janeiro, o numero anterior ao traço terá que ser 7(sete). O CPF 123.018.181-00 foi tirado em Brasília, uma vez que o número antes do controle é 1 (um). Esse numero, o nono na numeração dos CPFs, identifica a região fiscal onde mora o contribuinte ( ou onde o mesmo obteve o documento) Essas regiões fiscais são as seguintes:
    1º) Distrito Federal,Goiás, Tocatins e Mato Grosso;- 2º) Pará;- ) Ceará; 4º) Pernambuco; ​
    5º) Bahia; 6º) Minas Gerais; 7º) Rio de Janeiro e Espírito Santo; 8º) São Paulo; ) Paraná; ​
    10º) Rio Grande do Sul​
    Identificar a veracidade do restante dos números exigirá um maior número de contas. No CPF 987654321 por exemplo, o contribuinte terá que multiplicar o número nove por um, o oito por dois e assim sucessivamente até que resultará nas seguintes operações:
    Primeira Operação: 9 8 7 6 5 4 3 2 1 X 1 2 3 4 5 6 7 8 9
    -------------------------------------------
    9 + 16+ 21+ 24+ 25+ 24+ 21+ 16+ 9 = 165 : 11 = 15
    O resto deverá ser o primeiro número do controle após o traço ou barra. Isso significa que o número do CPF por enquanto é 9 8 7 6 5 4 3 2 1 - 0 faltando apenas o segundo número do controle.
    Segunda Operação: 9 8 7 6 5 4 3 2 1 - 0 X 0 1 2 3 4 5 6 7 8 9
    -----------------------------------------------------
    0 + 8 + 14 + 18 + 20 + 20 + 18 + 14+ 8 + 0 = 120 : 11 = 10
    A partir dessas operações, conclui-se que o segundo número do controle também é 0 (zero) O zero é obtido sempre que a conta for exata e o resto for zero ou igual a 10 ( dez)."
     

Partilhar esta Página