From a80e7074175f8bf15fa636963cc36815009c633b Mon Sep 17 00:00:00 2001 From: "Pierre Habouzit (MadCoder" Date: Mon, 13 Dec 2004 00:43:35 +0000 Subject: [PATCH] refactor git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-76 --- htdocs/paiement/cyberpaiement_retour.php | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/htdocs/paiement/cyberpaiement_retour.php b/htdocs/paiement/cyberpaiement_retour.php index 0c035e9..03d9086 100644 --- a/htdocs/paiement/cyberpaiement_retour.php +++ b/htdocs/paiement/cyberpaiement_retour.php @@ -33,19 +33,13 @@ function erreur($text) { exit; } -/* calcule la clé de Luhn d'un nombre */ +/* http://fr.wikipedia.org/wiki/Formule_de_Luhn */ function luhn($nombre) { + $s = strrev($nombre); $sum = 0; - for ($i = 0; $i < strlen($nombre); $i++) { - $digit = substr($nombre,$i,1); - if ($i % 2) { - if ($digit*2>9) - $sum += 2*$digit - 9; - else - $sum += 2*$digit; - } else { - $sum += $digit; - } + for ($i = 0; $i < strlen($s); $i++) { + $dgt = $s{$i}; + $sum += ($i % 2) ? (2*$dgt) % 9 : $dgt; } return $sum % 10; } @@ -53,13 +47,13 @@ function luhn($nombre) { /* calcule la clé d'acceptation a partir de 5 champs */ function cle_accept($d1,$d2,$d3,$d4,$d5) { - $m1 = luhn(strrev($d1.$d5)); - $m2 = luhn(strrev($d2.$d5)); - $m3 = luhn(strrev($d3.$d5)); - $m4 = luhn(strrev($d4.$d5)); + $m1 = luhn($d1.$d5); + $m2 = luhn($d2.$d5); + $m3 = luhn($d3.$d5); + $m4 = luhn($d4.$d5); $n = $m1 + $m2 + $m3 + $m4; $alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - return substr($alpha,$n-1,1).$m1.$m2.$m3.$m4; + return $alpha{$n-1}.$m1.$m2.$m3.$m4; } /* user id */ -- 2.1.4