login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Snippets > Eurobiljet checker

Eurobiljet checker

Auteur: Rens - 05 februari 2006 - 15:37 - Gekeurd door: nemesiskoen - Hits: 7387 - Aantal punten: 3.60 (5 stemmen)



Naar aanleiding van dit bericht kwam ik erop om het script te maken.
Op deze site zie je de gegevens die ik gebruikt heb.

Werking:
Het script pakt van het serienummer de letter, die staat voorop.
Vervolgens word de checksum berekent.
Dit word gedaan door de getallen bij elkaar op te tellen.
Het getal wat hieruit komt, word vervolgens nog een keer opgeteld.
Dus als je S01112777215 hebt:

01112777215 worden bij elkaar opgeteld.
0+1+1+1+2+7+7+7+2+1+5 = 34.
3+4 = 7.

Nu weet je de letter, namelijk S, en de checksum, namelijk 7.
Dan hoef je alleen nog maar uit te lezen welk land gebruik maakt van de letter S, en de checksum 7.
Dit is Italië.

Gebruiken:
Je hoeft niks aan te passen in het script.
Je kopieërt het, je plakt het, je slaat het op als een .php bestand en je kunt het gebruiken.

Je zou natuurlijk ook even naar de werking kunnen kijken... 

Code:
  1. <?PHP
  2. ?>
  3. <!DOCTYPE html
  4. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  5. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl">
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9. <title> -= EuroBiljet =- </title>
  10. </head>
  11. <body>
  12. <?PHP
  13. if($_SERVER['REQUEST_METHOD'] == "POST")
  14. {
  15. if(empty($_POST['sn']))
  16. {
  17. $aError[] = "Je hebt het serienummer niet ingevuld.\n";
  18. }
  19. if(!ereg("^[a-zA-Z]", $_POST['sn']) || !ctype_digit (subStr ($_POST['sn'], 1)))
  20. {
  21. $aError[] = "Je hebt geen geldig serienummer ingevuld.\n";
  22. }
  23. if(IsSet($aError))
  24. {
  25. ?>
  26. <table style="border: 1px solid #000000; width: 80%;">
  27. <tr>
  28. <td style="border: 1px solid #000000;">
  29. Kijk of een eurobiljet echt is en waar het vandaan komt!
  30. </td>
  31. </tr>
  32. <?PHP
  33. for($i = 0; $i < count($aError); $i++)
  34. {
  35. ?>
  36. <tr>
  37. <td style="border: 1px solid #000000;">
  38. <?=$aError[$i];?>
  39. </td>
  40. </tr>
  41. <?PHP
  42. }
  43. ?>
  44. <tr>
  45. <td style="border: 1px solid #000000;">
  46. <a href="javascript:history.go(-1);">Keer terug</a>.
  47. </td>
  48. </tr>
  49. </table>
  50. <?PHP
  51. } else
  52. {
  53. $sLetter = subStr($_POST['sn'], 0, 1);
  54. $iCijfers = subStr($_POST['sn'], 1, strLen($_POST['sn']));
  55.  
  56. for($i = 0; $i < strLen($iCijfers); $i++)
  57. {
  58. $aCijfers[] = $iCijfers{$i};
  59. }
  60.  
  61. $iTotaal = 0;
  62. for($i = 0; $i < count($aCijfers); $i++)
  63. {
  64. $iTotaal += $aCijfers[$i];
  65. }
  66.  
  67. function optellen($sGetal)
  68. {
  69. $iGetal = 0;
  70. for($i = 0; $i < strLen($sGetal); $i++)
  71. {
  72. $iGetal += subStr($sGetal, ($i), $i+1);
  73. }
  74. return $iGetal;
  75. }
  76.  
  77. while(strLen($iTotaal) != 1)
  78. {
  79. $iTotaal = optellen($iTotaal);
  80. }
  81. $iChecksum = $iTotaal;
  82.  
  83. // De landen Denemarken, Zweden en het Verenigd Koninkrijk nemen (nog) geen deel aan de euro
  84. // maar staan er wel tussen.
  85. // Ze staan er tussen omdat deze alvast gereserveerd zijn voor als ze ooit mee gaan doen
  86. $aCodes = array("z", "y", "x", "w", "v", "u", "t", "s", "r", "q", "p", "o", "n", "m", "l", "k", "j");
  87. $aLanden = array("Belgi&euml;", "Griekenland", "Duitsland", "Denemarken", "Spanje", "Frankrijk", "Ierland", "Itali&euml;", "Luxemburg", "n/a", "Nederland", "n/a", "Oostenrijk", "Portugal", "Finland", "Zweden", "Verenigd Koninkrijk");
  88. $aChecksum = array(9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7);
  89. for($i = 0; $i < count($aCodes); $i++)
  90. {
  91. if( ($aChecksum[$i] == $iChecksum) && ($aCodes[$i] == strToLower($sLetter)) )
  92. {
  93. $bOutput = true;
  94. ?>
  95. <table style="border: 1px solid #000000; width: 80%;">
  96. <tr>
  97. <td colspan="2" style="border: 1px solid #000000;">
  98. Kijk of een eurobiljet echt is en waar het vandaan komt!
  99. </td>
  100. </tr>
  101. <tr>
  102. <td style="width: 20%; border: 1px solid #000000;">
  103. Land van herkomst:
  104. </td>
  105. <td style="width: 80%; border: 1px solid #000000;">
  106. <?=$aLanden[$i];?>
  107. </td>
  108. </tr>
  109. <tr>
  110. <td style="width: 20%; border: 1px solid #000000;">
  111. Checksum:
  112. </td>
  113. <td style="width: 80%; border: 1px solid #000000;">
  114. <?=$aChecksum[$i];?>
  115. </td>
  116. </tr>
  117. <tr>
  118. <td style="width: 20%; border: 1px solid #000000;">
  119. Landcode:
  120. </td>
  121. <td style="width: 80%; border: 1px solid #000000;">
  122. <?=$aCodes[$i];?>
  123. </td>
  124. </tr>
  125. </table>
  126. <?PHP
  127. }
  128. }
  129. if((!IsSet($bOutput)) || ($bOutput === false))
  130. {
  131. echo $iChecksum;
  132. ?>
  133. <table style="border: 1px solid #000000; width: 80%;">
  134. <tr>
  135. <td style="border: 1px solid #000000;">
  136. Kijk of een eurobiljet echt is en waar het vandaan komt!
  137. </td>
  138. </tr>
  139. <tr>
  140. <td style="width: 100%; border: 1px solid #000000;">
  141. Het opgegeven nummer is niet correct.<br />
  142. <a href="javascript:history.go(-1);">Keer terug</a>.
  143. </td>
  144. </tr>
  145. </table>
  146. <?PHP
  147. }
  148. }
  149. } else
  150. {
  151. ?>
  152. <form method="post" action="<?=$_SERVER['REQUEST_URI'];?>">
  153. <table style="border: 1px solid #000000; width: 80%;">
  154. <tr>
  155. <td colspan="2" style="border: 1px solid #000000;">
  156. Kijk of een eurobiljet echt is en waar het vandaan komt!
  157. </td>
  158. </tr>
  159. <tr>
  160. <td style="width: 20%; border: 1px solid #000000;">
  161. Serienummer:
  162. </td>
  163. <td style="width: 80%; border: 1px solid #000000;">
  164. <div style="text-align: center;">
  165. <input type="text" name="sn" value="" maxlength="255" style="width: 90%;" />
  166. </div>
  167. </td>
  168. </tr>
  169. <tr>
  170. <td colspan="2" style="border: 1px solid #000000;">
  171. <div style="text-align: center;">
  172. <input type="submit" name="submit" value="Checken!" style="border: 1px solid #000000; width: 20%;" />
  173. <input type="reset" name="reset" value="Leeg velden!" style="border: 1px solid #000000; width: 20%;" />
  174. </div>
  175. </td>
  176. </tr>
  177. </table>
  178. </form>
  179. <?PHP
  180. }
  181. ?>
  182. </body>
  183. </html>
Download code! Download code (.txt)

 Bekijk een voorbeeld van dit script!
 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (26)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.029s