Vérification de la validité d'un billet de banque

Description

Ce script va, lorsque vous rentrez le numéro de série (avec la lettre au début) de n'importe quel billet Euro, vous dire si le billet que vous avez en votre possession est un vrai ou un faux. :)

Source / Exemple :


##########################################
## AUTRE VERSION DISPONIBLE DANS LE ZIP ##
##########################################

      <?php
if(isset($_POST['num']))
{
  if(preg_match("/[^:alnum:]/", $_POST['num'])) 
  {
  $letter = $_POST['num']{0};
    if(preg_match("/^[L-Z]/", $letter) && $letter != ("O"|"Q"|"W"))
    {
      switch ($letter) 
      {
        case 'L':
			$pre = '12';
			$num = str_replace("L", "12", $_POST['num']);
			break;
		case 'M':
			$pre = '13';
			$num = str_replace("M", "13", $_POST['num']);
			break;
		case 'N':
			$pre = '14';
			$num = str_replace("N", "14", $_POST['num']);
			break;
		case 'P':
			$pre = '16';
			$num = str_replace("P", "16", $_POST['num']);
			break;
		case 'R':
			$pre = '18';
			$num = str_replace("R", "18", $_POST['num']);
			break;
		case 'S':
			$pre = '19';
			$num = str_replace("S", "19", $_POST['num']);
			break;
		case 'T':
			$pre = '20';
			$num = str_replace("T", "20", $_POST['num']);
			break;
		case 'U':
			$pre = '21';
			$num = str_replace("U", "21", $_POST['num']);
			break;
		case 'V':
			$pre = '22';
			$num = str_replace("V", "22", $_POST['num']);
			break;
		case 'X':
			$pre = '24';
			$num = str_replace("X", "24", $_POST['num']);
			break;
		case 'Y':
			$pre = '25';
			$num = str_replace("Y", "25", $_POST['num']);
			break;
		case 'Z':
			$pre = '26';
			$num = str_replace("Z", "26", $_POST['num']);
			break;
	  }
	  if((strlen($num) == 13) OR (preg_match("/[^0-9]/", $num)))
	  {
	    if ( bcmod($num, "9") == 8) 
		{
		  echo "<br /><br /><h2><font color='green'>Votre billet est <b>vrai</b></font></h2><br /><br />";
		}
		else
		{
		  echo "<br /><br /><h2><font color='red'>Votre billet est <b>faux</b></font></h2><br /><br />";
		}
	  }
	  else
	  {
    	echo "<font color='red'><b>Numéro de série invalide!<br /><br /><font size='2'><u>Rappel:</u> 1 lettre (entre L et Z exceptées O, Q et W) puis 11 chiffres.</font></b></font><br /><br />";
	  }
	}
	else
	{
      echo "<font color='red'><b>Numéro de série invalide!<br /><br /><font size='2'><u>Rappel:</u> 1 lettre (entre L et Z exceptées O, Q et W) puis 11 chiffres.</font></b></font><br /><br />";
	}
  }
}
else
{
  echo "<br /><br /><br />";
}
    ?>
	
    <form id="form1" name="form1" method="post" action="">
      <label for="num">Numéro de série :</label>
      <input type="text" name="num" id="num" maxlength="12" />
      <p>
        <input type="submit" name="Envoyer" id="Envoyer" value="Envoyer" />
        <input type="reset" name="Envoyer2" id="Envoyer2" value="Réinitialiser" />
      </p>
    </form>

Conclusion :


Petites explications quand au travail du script.
En fait, la vérification d'un billet de banque (Euro) se fait de la manière suivante : On prend la première lettre du numéro de série et on détermine son rang dans l'alphabet. Ensuite on rassemble ce chiffre (par exemple 21 si c'est la lettre U) avec le reste du numéro de série.
Ce nombre doit donner 8 lorsqu'on le met modulo 9. Si le résultat est différent de 8, le billet est faux ;)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (The_magicien)