Guest User

Untitled

a guest
Apr 25th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 10.02 KB | None | 0 0
  1. <?php
  2. /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  3.  *
  4.  *           -=      Generator de CNP-uri      =-
  5.  *             - scris din lipsă de ocupație -
  6.  *
  7.  *  Salvează fișierul (gen „generator.php”) și rulează-l pe
  8.  *  un server care suportă PHP.
  9.  *
  10.  *  Acceptă 3 parametri, anume:
  11.  *      format: {string}
  12.  *              are 5 valori posibile, anume:
  13.  *              „plain”    - valoarea implicită
  14.  *              „html”     - mai exact, HTML5
  15.  *              „xml”      - XML, ce mama dracu' să fie?
  16.  *              „json”     - așijderea
  17.  *              „markdown” - un soi de plaintext
  18.  *
  19.  *      maxim: {int}
  20.  *             vârsta maximă a persoanei fictive pe care o
  21.  *             generezi; implicit e 30 ani
  22.  *
  23.  *      extra: {bool}
  24.  *             implicit „false”; dacă-l setezi ca „true”,
  25.  *             pe lângă CNP, scriptul mai scuipă așa:
  26.  *                 - sex
  27.  *                 - data nașterii
  28.  *                 - județ
  29.  *                 - număr de înregistrare (la evidența
  30.  *                   populației, gen)
  31.  *
  32.  *  Parametrii îi pasezi fie din script, înainte de „echo”,
  33.  *  fie din URL (gen „generator.php?format=json&maxim=17”)
  34.  *
  35.  *  Versiunea 1.1 și ultima, că deja mi-e sictir de el.
  36.  *
  37.  *  EU (rockeh) NU SUNT RESPONSABIL PENTRU EVENTUALELE
  38.  *  CĂCATURI PE CARE LE FACI FOLOSINDU-TE DE ACEST
  39.  *  SCRIPT. DACĂ FACI CEVA MIȘMAȘURI ȘI TE PRINDE GARDA,
  40.  *  EU NU VIN LA PÂRNAIE SĂ-ȚI ADUC ȚIGĂRI ȘI PORTOCALE.
  41.  *
  42.  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  43.  
  44. function leapYear($year) {
  45.     $year = (float)$year;
  46.     if (fmod($year, 400) == 0) {
  47.         return true;
  48.     } else {
  49.         if ((fmod($year, 100) != 0) && (fmod($year, 4) == 0)) {
  50.             return true;
  51.         } else {
  52.             return false;
  53.         }
  54.     }
  55. }
  56.  
  57. function cnp($format = "plain", $maxim = 30, $extra = false) {
  58.     $luni = array(
  59.         "ianuarie",
  60.         "februarie",
  61.         "martie",
  62.         "aprilie",
  63.         "mai",
  64.         "iunie",
  65.         "iulie",
  66.         "august",
  67.         "septembrie",
  68.         "octombrie",
  69.         "noiembrie",
  70.         "decembrie"
  71.     );
  72.     $judete = array(
  73.         01 => "Alba",
  74.         02 => "Arad",
  75.         03 => "Argeş",
  76.         04 => "Bacău",
  77.         05 => "Bihor",
  78.         06 => "Bistriţa-Năsăud",
  79.         07 => "Botoşani",
  80.         08 => "Braşov",
  81.         09 => "Brăila",
  82.         10 => "Buzău",
  83.         11 => "Caraş-Severin",
  84.         12 => "Cluj",
  85.         13 => "Constanţa",
  86.         14 => "Covasna",
  87.         15 => "Dâmboviţa",
  88.         16 => "Dolj",
  89.         17 => "Galaţi",
  90.         18 => "Gorj",
  91.         19 => "Harghita",
  92.         20 => "Hunedoara",
  93.         21 => "Ialomiţa",
  94.         22 => "Iaşi",
  95.         23 => "Ilfov",
  96.         24 => "Maramureş",
  97.         25 => "Mehedinţi",
  98.         26 => "Mureş",
  99.         27 => "Neamţ",
  100.         28 => "Olt",
  101.         29 => "Prahova",
  102.         30 => "Satu-Mare",
  103.         31 => "Sălaj",
  104.         32 => "Sibiu",
  105.         33 => "Suceava",
  106.         34 => "Teleorman",
  107.         35 => "Timiş",
  108.         36 => "Tulcea",
  109.         37 => "Vaslui",
  110.         38 => "Vâlcea",
  111.         39 => "Vrancea",
  112.         40 => "Bucureşti",
  113.         41 => "Bucureşti (Sector 1)",
  114.         42 => "Bucureşti (Sector 2)",
  115.         43 => "Bucureşti (Sector 3)",
  116.         44 => "Bucureşti (Sector 4)",
  117.         45 => "Bucureşti (Sector 5)",
  118.         46 => "Bucureşti (Sector 6)",
  119.         51 => "Călăraşi",
  120.         52 => "Giurgiu"
  121.     );
  122.     //  sex
  123.     $sex = rand(1, 2);
  124.     //  an
  125.     $an = rand((date("Y") - $maxim), (date("Y") - 14));
  126.     //  fix sex
  127.     if ((date("Y") - 14) >= 2000) {
  128.         if ($sex == 1)
  129.             $sex = 5;
  130.         else
  131.             $sex = 6;
  132.     }
  133.     //  luna
  134.     $luna = rand(1, 12);
  135.     if (strlen($luna) == 1) {
  136.         $luna = ("0" . $luna);
  137.     }
  138.     //  zi
  139.     //  an bisect?
  140.     if (leapYear($an)) {
  141.         $zi = rand(1, 29);
  142.     } else {
  143.         //  februarie?
  144.         if ($luna == 2) {
  145.             $zi = rand(1, 28);
  146.         } else {
  147.             //  cu 31 zile?
  148.             if (
  149.                 ($luna == 1) ||
  150.                 ($luna == 3) ||
  151.                 ($luna == 5) ||
  152.                 ($luna == 7) ||
  153.                 ($luna == 8) ||
  154.                 ($luna == 10) ||
  155.                 ($luna == 12)
  156.             ) {
  157.                 $zi = rand(1, 31);
  158.             } else {
  159.                 $zi = rand(1, 30);
  160.             }
  161.         }
  162.     }
  163.     if (strlen($zi) == 1) {
  164.         $zi = ("0" . $zi);
  165.     }
  166.     //  judet
  167.     $judet = rand(1, 52);
  168.     while (
  169.         ($judet == 47) ||
  170.         ($judet == 48) ||
  171.         ($judet == 49) ||
  172.         ($judet == 50)
  173.     ) {
  174.         $judet = rand(1, 52);
  175.     }
  176.     if (strlen($judet) == 1) {
  177.         $judet = ("0" . $judet);
  178.     }
  179.     //  registru
  180.     $registru = rand(1, 999);
  181.     if (strlen($registru) == 2) {
  182.         $registru = "0" . $registru;
  183.     } elseif (strlen($registru) == 1) {
  184.         $registru = "00" . $registru;
  185.     }
  186.     $cnpTemporar = $sex . substr($an, -2) . $luna . $zi . $judet . $registru;
  187.     //  control
  188.     $cifraVer = str_split("279146358279");
  189.     $cifraCNP = str_split("". $cnpTemporar ."");
  190.     $rezAdunare = 0;
  191.     for ($i = 0; $i < 12; $i++) {
  192.         $rezAdunare += $cifraVer[$i] * $cifraCNP[$i];
  193.     }
  194.     $cifraControl = $rezAdunare % 11;
  195.     if ($cifraControl == 10) {
  196.         $cifraControl = 1;
  197.     }
  198.     $CNP = $cnpTemporar . $cifraControl;
  199.  
  200.     //  Output
  201.     $ret = "";
  202.     if ($format == "xml") {
  203.         header("Content-type: text/xml; charset=utf-8");
  204.         if ($extra) {
  205.             $ret .= "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>". PHP_EOL;
  206.             $ret .= "<informatii>". PHP_EOL;
  207.             $ret .= "\t<cnp>". PHP_EOL;
  208.             $ret .= "\t\t<label>CNP</label>". PHP_EOL;
  209.             $ret .= "\t\t<value>" . $CNP . "</value>". PHP_EOL;
  210.             $ret .= "\t</cnp>". PHP_EOL;
  211.             $ret .= "\t<sex>". PHP_EOL;
  212.             $ret .= "\t\t<label>Sex</label>". PHP_EOL;
  213.             $ret .= "\t\t<value>". (($sex == 1) ? "masculin" : (($sex == 5) ? "masculin" : "feminin")) ."</value>". PHP_EOL;
  214.             $ret .= "\t</sex>". PHP_EOL;
  215.             $ret .= "\t<data>". PHP_EOL;
  216.             $ret .= "\t\t<label>Data nașterii</label>". PHP_EOL;
  217.             $ret .= "\t\t<value>". $zi ." ". $luni[$luna - 1]. " ". $an ."</value>". PHP_EOL;
  218.             $ret .= "\t</data>". PHP_EOL;
  219.             $ret .= "\t<judet>". PHP_EOL;
  220.             $ret .= "\t\t<label>Județ</label>". PHP_EOL;
  221.             $ret .= "\t\t<value>". $judete[(int)$judet] ."</value>". PHP_EOL;
  222.             $ret .= "\t</judet>". PHP_EOL;
  223.             $ret .= "\t<registru>". PHP_EOL;
  224.             $ret .= "\t\t<label>Număr registru</label>". PHP_EOL;
  225.             $ret .= "\t\t<value>". $registru ."</value>". PHP_EOL;
  226.             $ret .= "\t</registru>". PHP_EOL;
  227.             $ret .= "</informatii>". PHP_EOL;
  228.         } else {
  229.             $ret .= "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>". PHP_EOL;
  230.             $ret .= "<informatii>". PHP_EOL;
  231.             $ret .= "\t<cnp>". $CNP ."</cnp>". PHP_EOL;
  232.             $ret .= "</informatii>". PHP_EOL;
  233.         }
  234.     } elseif ($format == "html") {
  235.         header("Content-type: text/xml; charset=utf-8");
  236.         if ($extra) {
  237.             $ret .= "<!DOCTYPE HTML>". PHP_EOL;
  238.             $ret .= "<html lang=\"en-US\">". PHP_EOL;
  239.             $ret .= "<head>". PHP_EOL;
  240.             $ret .= "\t<meta charset=\"UTF-8\">". PHP_EOL;
  241.             $ret .= "\t<title>CNP</title>". PHP_EOL;
  242.             $ret .= "</head>". PHP_EOL;
  243.             $ret .= "<body>". PHP_EOL;
  244.             $ret .= "\t\t<p><strong>CNP:</strong> " . $CNP . "</p>". PHP_EOL;
  245.             $ret .= "\t\t<p><strong>Sex:</strong> ". (($sex == 1) ? "masculin" : (($sex == 5) ? "masculin" : "feminin")) ."</p>". PHP_EOL;
  246.             $ret .= "\t\t<p><strong>Data nașterii:</strong> ". $zi ." ". $luni[$luna - 1]. " ". $an ."</p>". PHP_EOL;
  247.             $ret .= "\t\t<p><strong>Județ:</strong> ". $judete[(int)$judet] ."</p>". PHP_EOL;
  248.             $ret .= "\t\t<p><strong>Număr registru:</strong> ". $registru ."</p>". PHP_EOL;
  249.             $ret .= "</body>". PHP_EOL;
  250.             $ret .= "</html>". PHP_EOL;
  251.         } else {
  252.             $ret .= "<!DOCTYPE HTML>". PHP_EOL;
  253.             $ret .= "<html lang=\"en-US\">". PHP_EOL;
  254.             $ret .= "<head>". PHP_EOL;
  255.             $ret .= "\t<meta charset=\"UTF-8\">". PHP_EOL;
  256.             $ret .= "\t<title>CNP</title>". PHP_EOL;
  257.             $ret .= "</head>". PHP_EOL;
  258.             $ret .= "<body>". PHP_EOL;
  259.             $ret .= "\t<p>". $CNP ."</p>". PHP_EOL;
  260.             $ret .= "</body>". PHP_EOL;
  261.             $ret .= "</html>". PHP_EOL;
  262.         }
  263.     } elseif ($format == "json") {
  264.         header("Content-type: application/json; charset=utf-8");
  265.         if ($extra) {
  266.             $ret .= "{". PHP_EOL;
  267.             $ret .= "\t\"cnp\" : {". PHP_EOL;
  268.             $ret .= "\t\t\"label\" : \"CNP\",". PHP_EOL;
  269.             $ret .= "\t\t\"value\" : \"" . $CNP . "\"". PHP_EOL;
  270.             $ret .= "\t}, ". PHP_EOL;
  271.             $ret .= "\t\"sex\" : {". PHP_EOL;
  272.             $ret .= "\t\t\"label\" : \"Sex\",". PHP_EOL;
  273.             $ret .= "\t\t\"value\" : \"". (($sex == 1) ? "masculin" : (($sex == 5) ? "masculin" : "feminin")) ."\"". PHP_EOL;
  274.             $ret .= "\t}, ". PHP_EOL;
  275.             $ret .= "\t\"data\" : {". PHP_EOL;
  276.             $ret .= "\t\t\"label\" : \"Data nașterii\",". PHP_EOL;
  277.             $ret .= "\t\t\"value\" : \"". $zi ." ". $luni[$luna - 1]. " ". $an ."\"". PHP_EOL;
  278.             $ret .= "\t}, ". PHP_EOL;
  279.             $ret .= "\t\"judet\" : {". PHP_EOL;
  280.             $ret .= "\t\t\"label\" : \"Județ\",". PHP_EOL;
  281.             $ret .= "\t\t\"value\" : \"". $judete[(int)$judet] ."\"". PHP_EOL;
  282.             $ret .= "\t}, ". PHP_EOL;
  283.             $ret .= "\t\"registru\" : {". PHP_EOL;
  284.             $ret .= "\t\t\"label\" : \"Număr registru\",". PHP_EOL;
  285.             $ret .= "\t\t\"value\" : \"". $registru ."\"". PHP_EOL;
  286.             $ret .= "\t}". PHP_EOL;
  287.             $ret .= "}". PHP_EOL;
  288.         } else {
  289.             $ret .= "{\"cnp\": \"". $CNP ."\"}". PHP_EOL;
  290.         }
  291.     } elseif ($format == "markdown") {
  292.         header("Content-type: text/plain; charset=utf-8");
  293.         if ($extra) {
  294.             $ret .= "**CNP:** " . $CNP . "". PHP_EOL;
  295.             $ret .= "". PHP_EOL;
  296.             $ret .= "**Sex:** ". (($sex == 1) ? "masculin" : (($sex == 5) ? "masculin" : "feminin")) ."". PHP_EOL;
  297.             $ret .= "". PHP_EOL;
  298.             $ret .= "**Data nașterii:** ". $zi ." ". $luni[$luna - 1]. " ". $an ."". PHP_EOL;
  299.             $ret .= "". PHP_EOL;
  300.             $ret .= "**Județ:** ". $judete[(int)$judet] ."". PHP_EOL;
  301.             $ret .= "". PHP_EOL;
  302.             $ret .= "**Număr registru:** ". $registru ."". PHP_EOL;
  303.         } else {
  304.             $ret .= $CNP;
  305.         }
  306.     } else {
  307.         header("Content-type: text/plain; charset=utf-8");
  308.         if ($extra) {
  309.             $ret .= "CNP: " . $CNP . "". PHP_EOL;
  310.             $ret .= "Sex: ". (($sex == 1) ? "masculin" : (($sex == 5) ? "masculin" : "feminin")) ."". PHP_EOL;
  311.             $ret .= "Data nașterii: ". $zi ." ". $luni[$luna - 1]. " ". $an ."". PHP_EOL;
  312.             $ret .= "Județ: ". $judete[(int)$judet] ."". PHP_EOL;
  313.             $ret .= "Număr registru: ". $registru ."". PHP_EOL;
  314.         } else {
  315.             $ret .= $CNP;
  316.         }
  317.     }
  318.  
  319.     return $ret;
  320. }
  321.  
  322. if (isset($_REQUEST["format"])) {
  323.     $format = (string)$_REQUEST["format"];
  324. } else {
  325.     $format = "plain";
  326. }
  327.  
  328. if (isset($_REQUEST["maxim"])) {
  329.     $maxim = (int)$_REQUEST["maxim"];
  330. } else {
  331.     $maxim = 30;
  332. }
  333.  
  334. if (isset($_REQUEST["extra"])) {
  335.     $extra = (bool)$_REQUEST["extra"];
  336. } else {
  337.     $extra = false;
  338. }
  339.  
  340. echo cnp($format, $maxim, $extra);
  341.  
  342. ?>
Add Comment
Please, Sign In to add comment