Cherche algorithme de Luhn en PHP

Cherche algorithme de Luhn en PHP - PHP - Programmation

Marsh Posté le 30-07-2002 à 20:32:31    

Après de vaines recherches je ne le trouve toujours pas. Je l'ai en ASP mais je n'arrive pas à le traduire en PHP... Je le donne en ASP au cas où il y ait des personnes sachant me faire la traduction :

Code :
  1. FUNCTION validCCNumber( ccnumber )
  2.   IF ccnumber = "" THEN
  3.     validCCNumber = FALSE
  4.   ELSE
  5.   isEven = False
  6.   digits = ""       
  7.   for i = Len( ccnumber ) To 1 Step -1
  8.   if isEven Then
  9.     digits = digits & CINT( MID( ccnumber, i, 1) ) * 2
  10.   Else               
  11.     digits = digits & CINT( MID( ccnumber, i, 1) )
  12.   End If           
  13.   isEven = (Not isEven)
  14.   Next
  15.   checkSum = 0
  16.   For i = 1 To Len( digits) Step 1
  17.     checkSum = checkSum + CINT( MID( digits, i, 1 ) )       
  18.   Next
  19.   validCCNumber = ( ( checkSum Mod 10) = 0 )
  20.   END IF
  21. End Function

Reply

Marsh Posté le 30-07-2002 à 20:32:31   

Reply

Marsh Posté le 30-07-2002 à 21:28:17    

simple question pour ne pas mourir idiot
 
ca sert a koi un algorithme de Luhn ?


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 31-07-2002 à 01:15:50    

en java :
 

function Teste_numero()
{
  var numero = document.forms[0].elements[0].value;
  var totalcarte=0;
  var dnum=0;
  var test=0;
  if (numero.length < 13) {
 alert ('Nombre de chiffres entrés incorrect');
 document.forms[0].elements[0].focus();
 }
 else
 {
  for ( i = numero.length; i >= 1 ;  i--)
  {
    test=test+1;
 num = numero.charAt(i-1);
    if ((test % 2) != 0)
       totalcarte=totalcarte+parseInt(num)
    else {
       dnum=parseInt(num)*2;
       if (dnum >= 10)
          totalcarte=totalcarte+1+dnum-10
       else
          totalcarte=totalcarte+dnum;
    }
   
  }
  if ((totalcarte % 10) != 0){
       alert('Numéro de carte non valide: somme='+ totalcarte);
       document.forms[0].elements[0].focus();
       return (false);
  }else{
       alert ('Carte acceptée : somme='+ totalcarte);
       return(true);
  }
}
}
 
</script>

Reply

Marsh Posté le 31-07-2002 à 01:35:26    

stef_dobermann a écrit a écrit :

simple question pour ne pas mourir idiot
 
ca sert a koi un algorithme de Luhn ?




 

Citation :

Voici un algorithme utile quand l'on souhaite, tester sans connexion à un système bancaire, la validité d'un numéro de carte, ou tout du moins limiter les erreurs possibles.


http://www.asp-magazine.com/fr/jav [...] cs/tr3.asp


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 31-07-2002 à 09:49:00    

Reply

Marsh Posté le 31-07-2002 à 15:52:36    

Bozocarzu : c'est du JavaScript que tu m'as donné, pas du Java. Mais merci quand même. Je pense pouvoir traduire ça en PHP. C cool ! Thanks.
 
Gaya : je suis allé sur Nexen avant de venir sur ce forum. En fait j'ai pas compris le script !

Reply

Marsh Posté le 31-07-2002 à 19:38:58    

Dost67 a écrit a écrit :

Bozocarzu : c'est du JavaScript que tu m'as donné, pas du Java. Mais merci quand même. Je pense pouvoir traduire ça en PHP. C cool ! Thanks.
 
Gaya : je suis allé sur Nexen avant de venir sur ce forum. En fait j'ai pas compris le script !




 
Quand je disait java, je pensait au js, c'est l'habitude que j'ai pris de dire java pour le js !
Avant je ne faisait la difference entre les deux

Reply

Marsh Posté le 01-08-2002 à 19:57:45    

Le voilà, je l'ai enfin traduit et c'est OK :

Code :
  1. function validCCNumber($ccnumber) {
  2.   $totalcarte = 0;
  3.   $dnum = 0;
  4.   $test = 0;
  5.   $number_len = strlen($ccnumber);
  6.   if ($number_len < 13) {
  7.     // Nombre de chiffres entrés incorrect
  8.     return false;
  9.   }
  10.   else {
  11.     for ($i=$number_len; $i>=1; $i--) {
  12.       $test += 1;
  13.       $num = substr($ccnumber, ($i-1), 1);
  14.       if (($test % 2) != 0) {
  15.         $totalcarte += (int)$num;
  16.       }
  17.       else {
  18.         $dnum = (int)$num * 2;
  19.         if ($dnum > 10) {
  20.           $totalcarte += 1 + $dnum - 10;
  21.         }
  22.         else {
  23.           $totalcarte += $dnum;
  24.         }
  25.       }
  26.     }
  27.     if (($totalcarte % 10) != 0) {
  28.       // Numéro de carte non valide
  29.       return false;
  30.     }
  31.     else {
  32.       // Carte acceptée
  33.       return true;
  34.     }
  35.   }
  36. }

Reply

Marsh Posté le 13-03-2008 à 10:13:47    

Je déterre ce topic pour la bonne cause :)  
Y a plein de traitements inutile dans ton code je pense, m'enfin depuis le temps ça a dut évoluer...
 
Je poste ici ma solution car pour ceux qui recherche une fonction de luhn en PHP c'est une des premières pages que l'on trouve.
Je me suis tout bêtement appuyé sur les explications de wikipédia.
La fonction de luhn sert à vérifier le code de carte bleue, le numéro de SIRENE/SIRET et bien d'autre...
 
http://www.prometee-creation.com/t [...] n-php.html


Message édité par prometeea le 13-03-2008 à 10:14:10
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed