Contrôle de la conformité d'un numéro de carte bancaire (algorithme de luhn)

Contenu du snippet

Voici une fonction simple qui permet de contrôler la conformité d'un numéro de carte bancaire.

Il suffit de passer en paramètre les 16 chiffres de la carte et la fonction renverra true si le numéro est conforme et false si il n'est pas conforme.

Cette fonction utilise l'algorithme de LUHN pour tester la conformité du numéro.

Attention : Cette fonction ne garantie pas que le numéro de carte bancaire est valide. Un numéro peut être conforme mais pas forcément valide. Seul un établissement bancaire pourra garantir la validité d'un numéro.

Source / Exemple :


<?php
	/**

  • Test la conformité d'un numéro de carte bancaire.
*
  • @param string $num
  • /
function test_cb($num){ if(strlen($num) == 16){ // 16 caractères // Séparation de tous les caractères $c = array(); for($i=0; $i<16; $i++){ if(is_numeric(substr($num,$i,1))){ // Uniquement des chiffres $c[$i] = substr($num,$i,1); }else{ return false; } } // Contrôle $m1 = 0; for($i=0; $i<16; $i++){ if(($i%2)==0){ $x = $c[$i]*2; if($x>9){ $m1 += $x-9; }else{ $m1 += $x; } }else{ $m1 += $c[$i]; } } if(($m1%10)!=0){ // Doit être multiple de 10 return false; } // Pas d'erreur return true; }else{ return false; } } ?>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.