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
*/
function verif_rib($code_banque , $code_guichet , $num_compte , $cle, $iban) {
if (eregi("^FR",$iban)) { // Cas de la France
$coef = array(62, 34, 3) ;
// Concatenation des differents codes.
$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.
// 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;
function verif_rib($code_banque , $code_guichet , $num_compte , $cle, $iban)
{
if (eregi("^FR",$iban))
{ // Cas de la France
$coef = array(62, 34, 3) ;
// Concatenation des differents codes.
$rib = strtolower(trim($code_banque).trim($code_guichet).trim($num_compte).trim($cle));
// 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;