Guest User

Untitled

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