Programmation PHP/Exemples/Vérification RIO
Apparence
Le relevé d'identité opérateur (en abrégé RIO) est un identifiant unique attribué à chaque contrat de téléphonie mobile en France.
Le fragment de code PHP ci-dessous permet de vérifier si celui-ci est correct.
explications
[modifier | modifier le wikicode]- le champ
coderio
doit être renseigné avec le code RIO sans blanc. - le champ
mobile
doit être renseigné avec un numéro de téléphone mobile, sans blanc.
code
[modifier | modifier le wikicode]$rio = isset($_POST["coderio"]) ? strtoupper(trim($_POST["coderio"])) : null ;
$mobile = isset($_POST["mobile"]) ? $_POST["mobile"] : null ;
if ($rio === null OR $mobile === null )
{
echo "Un des champs est vide";
}
else if(strlen($rio) !=12)
{
echo "Le code RIO doit contenir 12 caractères exactement";
}
else
{
$operateur=substr($rio,0,2);
$typecontrat=substr($rio,2,1);
$refclient=substr($rio,3,6);
if($typecontrat != "P" && $typecontrat != "E")
{
echo "Le code RIO est erroné, l'identification du contrat est faux";
exit;
}
$ordre="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+";
$res = array(0,0,0);
$tmp=$operateur.$typecontrat.$refclient.$mobile;
for($n=0;$n<19;$n++) {
$pos=strpos($ordre,substr($tmp,$n, 1));
$res[0]=($res[0]+$pos)%37;
$res[1]=((2*$res[1])+$pos)%37;
$res[2]=((4*$res[2])+$pos)%37;
}
$clecalculee = substr($ordre,$res[0],1).substr($ordre,$res[1],1).substr($ordre,$res[2],1);
if(substr($rio,9) != $clecalculee)
{
echo "Le code RIO est erroné";
}
else
{
echo "<em>!!! Le code RIO est BON !!!</em>";
}
}