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.
$rib = strtr($rib, "abcdefghijklmnopqrstuvwxyz","12345678912345678912345678");
// Separation du rib en 3 groupes de 7 + 1 groupe de 2. $coef = array(62, 34, 3) ;
// 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 // Concatenation des differents codes.
$cle_rib = 97 - ($s % 97) ; $rib = strtolower(trim($code_banque).trim($code_guichet).trim($num_compte).trim($cle));
if ($cle_rib == $cle) { return true; }
return false; // On remplace les eventuelles lettres par des chiffres.
//Ne marche pas
//$rib = strtr($rib, "abcdefghijklmnopqrstuvwxyz","12345678912345678912345678");
$rib = strtr($rib, "abcdefghijklmnopqrstuvwxyz","12345678912345678923456789");
print $rib;
// 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;