Aller au contenu

Programmation PHP/Exemples/Vérification RIO

Un livre de Wikilivres.



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.

  • 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.
$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>";	
     }
}