Função para validar números de cartão de crédito


Autor/fonte: Rodrigo Tannuri



Digg del.icio.us

Arquivo validacao.html:

<html>
<form action="validacao_cartao_form.php" method="post">
Digite o número do cartão<br><INPUT TYPE="text" SIZE="30" MAXLENGTH="60"
NAME="CARTAO"><br>
<INPUT TYPE="radio" CHECKED NAME="TIPO_CARTAO" VALUE="mast">Mastercard<br>
<INPUT TYPE="radio" CHECKED NAME="TIPO_CARTAO" VALUE="visa">Visa<br>
<INPUT TYPE="radio" CHECKED NAME="TIPO_CARTAO" VALUE="amex">American
Express<br>
<INPUT TYPE="radio" CHECKED NAME="TIPO_CARTAO" VALUE="disc">Dinners<br>
<input type="submit" value="enviar">
</html>

Arquivo validacao_cartao_form.php:

<?php
$nuCartao = $_POST['CARTAO'];
$rgCartao = $_POST['TIPO_CARTAO'];

function teste($rgCartao, $nuCartao = 'desconheço') {
$rgCartao = strtolower($rgCartao);
$nuCartao = ereg_replace('[-[:space:]]', '',$nuCartao);

if ($rgCartao == 'desconheço') { } // se nada foi especificado
elseif ($rgCartao == 'mast'){
if (strlen($nuCartao) != 16 || !ereg('5[1-5]', $nuCartao))
return "Cartão com número Inválido";
}
elseif ($rgCartao == 'visa'){
if ((strlen($nuCartao) != 13 && strlen($nuCartao) != 16) ||
substr($nuCartao, 0, 1) != '4')
return "Cartão com número Inválido";
}
elseif ($rgCartao == 'amex'){
if (strlen($nuCartao) != 15 || !ereg('3[47]', $nuCartao))
return "Cartão com número Inválido";
}
elseif ($rgCartao == 'disc'){
if (strlen($nuCartao) != 16 || substr($nuCartao, 0, 4) != '6011')
return "Cartão com número Inválido";
}
else {
return "Tipo não foi informado";
}

$dig = toCharArray($nuCartao);
$numdig = sizeof ($dig);
$j = 0;
for ($i=($numdig-2); $i>=0; $i-=2){
$dbl[$j] = $dig[$i] * 2;
$j++;
}
$dblsz = sizeof($dbl);
$validate =0;
for ($i=0;$i<$dblsz;$i++){
$add = toCharArray($dbl[$i]);
for ($j=0;$j<sizeof($add);$j++){
$validate += $add[$j];
}
$add = '';
}
for ($i=($numdig-1); $i>=0; $i-=2){
$validate += $dig[$i];
}
if (substr($validate, -1, 1) == '0') return "Cartão correto";
else return "Cartão com digito inválido";
}

function toCharArray($input){
$len = strlen($input);
for ($j=0;$j<$len;$j++){
$char[$j] = substr($input, $j, 1);
}
return ($char);
}

echo teste($rgCartao, $nuCartao);
?>

Espero que tenha ajudado!




Enviado por xKuRt em 14/10/2006 às 09:36


Avaliação

Esta publicação ainda não foi avaliada!


Avaliar:


A avaliação de publicações é restrita a membros cadastrados e logados no nosso site.



Comentários

Este artigo ainda não foi comentado ou o(s) comentário(s) que foi(ram) enviado(s) a ele ainda não foi(ram) publicado(s).


Envio de comentário:




  

Terça, 25 de Abril de 2017




Top 5 membros

Últimos membros online

Últimos membros cadastrados



Capa do livro
Noções de Informática para Concursos


Capa do livro
Programando Microsoft Access com VBA5


Capa do livro
Criando Aplicações PHP com Zend e Dojo: Padrões e Reuso com Frameworks - Edição Revisada e Ampliada





Hostnet

IMD