2010-11-04 11:05:01 +00:00
|
|
|
|
<?
|
|
|
|
|
|
2010-11-29 14:17:26 +00:00
|
|
|
|
/** Test de la validit<69> du siren demand<6E> */
|
2010-11-04 11:05:01 +00:00
|
|
|
|
function valideSiren($siren, $nic='', $erreur=false) {
|
|
|
|
|
|
|
|
|
|
$lenSIREN=strlen($siren);
|
2010-11-29 14:17:26 +00:00
|
|
|
|
if (!valideData($siren, 9, 9,'N')) //Siren non pr<70>cis<69> ou incorrect.
|
2010-11-04 11:05:01 +00:00
|
|
|
|
return $erreur;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (!isset($nic) || trim($nic)=='')
|
|
|
|
|
{
|
|
|
|
|
$somme=0;
|
|
|
|
|
for ($i=0; $i<=8; $i+=2) // Traitement IMPAIR
|
|
|
|
|
$somme+=(integer)substr($siren,$i,1);
|
|
|
|
|
|
|
|
|
|
for ($i=1; $i<=7; $i+=2)
|
|
|
|
|
{ // Traitement PAIR
|
|
|
|
|
$var_tmp=(string)(2*((integer)substr($siren,$i,1)));
|
|
|
|
|
$som_tmp=0;
|
|
|
|
|
for($j=0;$j<strlen($var_tmp);$j++)
|
|
|
|
|
$som_tmp+=(integer)substr($var_tmp,$j,1);
|
|
|
|
|
$somme+=$som_tmp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((integer)($somme/10)!=($somme/10))
|
|
|
|
|
{ // Le Siren est faux
|
2010-11-29 14:17:26 +00:00
|
|
|
|
if (substr($siren,0,3)!='200') // Les siren d<>butant par 200 sont toujours valides (sirens provisoires de la BDF?!)
|
2010-11-04 11:05:01 +00:00
|
|
|
|
return $erreur;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (!valideData($nic,1,5,'N')) // Nic de format incorrect.
|
|
|
|
|
return $erreur;
|
|
|
|
|
|
|
|
|
|
$SIRET=$siren.$nic;
|
|
|
|
|
$somme=0;
|
|
|
|
|
for ($i=0; $i<=12; $i+=2)
|
|
|
|
|
{ // Traitement PAIR
|
|
|
|
|
$var_tmp=(string)(2*((integer)substr($SIRET,$i,1)));
|
|
|
|
|
$som_tmp=0;
|
|
|
|
|
for($j=0;$j<strlen($var_tmp);$j++)
|
|
|
|
|
$som_tmp+=(integer)substr($var_tmp,$j,1);
|
|
|
|
|
$somme+=$som_tmp;
|
|
|
|
|
}
|
|
|
|
|
for ($i=1; $i<=13; $i+=2) // Traitement IMPAIR
|
|
|
|
|
$somme+=(integer)substr($SIRET,$i,1);
|
|
|
|
|
|
|
|
|
|
if ((integer)($somme/10)!=($somme/10))// Le Siret est faux
|
|
|
|
|
return $erreur;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
?>
|