Bugfix sur la translation des lettres en chiffres

This commit is contained in:
Rodolphe Quiedeville 2005-03-03 16:09:01 +00:00
parent 3c51b7842c
commit 4d9a83a8e2

View File

@ -43,25 +43,41 @@
\return int true si les infos sont bonnes, false si la clé ne correspond pas \return int true si les infos sont bonnes, false si la clé ne correspond pas
*/ */
function verif_rib($code_banque , $code_guichet , $num_compte , $cle, $iban) { function verif_rib($code_banque , $code_guichet , $num_compte , $cle, $iban)
if (eregi("^FR",$iban)) { // Cas de la France {
$coef = array(62, 34, 3) ; if (eregi("^FR",$iban))
// Concatenation des differents codes. { // Cas de la France
$rib = strtolower($code_banque.$code_guichet.$num_compte.$cle);
// On remplca les eventuelles lettres par des chiffres. $coef = array(62, 34, 3) ;
$rib = strtr($rib, "abcdefghijklmnopqrstuvwxyz","12345678912345678912345678");
// Concatenation des differents codes.
// Separation du rib en 3 groupes de 7 + 1 groupe de 2. $rib = strtolower(trim($code_banque).trim($code_guichet).trim($num_compte).trim($cle));
// Multiplication de chaque groupe par les coef du tableau
for ($i=0, $s=0; $i<3; $i++) { // On remplace les eventuelles lettres par des chiffres.
$code = substr($rib, 7 * $i, 7) ;
$s += (0 + $code) * $coef[$i] ; //Ne marche pas
} //$rib = strtr($rib, "abcdefghijklmnopqrstuvwxyz","12345678912345678912345678");
// Soustraction du modulo 97 de $s à 97 pour obtenir la clé RIB $rib = strtr($rib, "abcdefghijklmnopqrstuvwxyz","12345678912345678923456789");
$cle_rib = 97 - ($s % 97) ;
if ($cle_rib == $cle) { return true; } print $rib;
return false; // Separation du rib en 3 groupes de 7 + 1 groupe de 2.
// Multiplication de chaque groupe par les coef du tableau
for ($i=0, $s=0; $i<3; $i++)
{
$code = substr($rib, 7 * $i, 7) ;
$s += (0 + $code) * $coef[$i] ;
}
// Soustraction du modulo 97 de $s à 97 pour obtenir la clé RIB
$cle_rib = 97 - ($s % 97) ;
if ($cle_rib == $cle)
{
return true;
}
return false;
} }
return true; return true;