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.

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>";	
      }
}