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:




  

Quarta, 01 de Outubro de 2014




Top 5 membros

Últimos membros online

  • 1em 01/10 às 15:49
  • kelexem 24/09 às 09:55
  • xKuRtem 23/09 às 20:00

Últimos membros cadastrados



Capa do livro
Introdução à Programação com Python - Algoritmos e Lógica de Programação para Iniciantes


Capa do livro
Estrutura de Dados e Algoritmos em Java


Capa do livro
Autodesk Revit Architecture 2013: Conceitos e Aplicações





Hostnet

IMD