Afin de vérifier le code de contrôle d'un RIO, il est possible d'utiliser le code PHP suivant (envoi depuis un formulaire du code RIO et du numéro de téléphone mobile en méthode POST) :
<?php
$rio = $_POST["coderio"];
$mobile = $_POST["mobile"];
if ($rio == "" or $mobile == "") echo "Un des champs est vide";
else if (strlen($rio) != 12) echo "Le code RIO doit contenir 12 caractères exactement";
else {
$rio = strtoupper($rio);
$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";
$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>";
}
?>