Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][PHP]Generator numeru pesel JS-> PHP
Elber
post
Post #1





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


Witam,

szukałem wczoraj dość długo generatora numerów pesel w PHP ... zamiast tego znalazłem w JS ... Tylko nie za bardzo wiem jak przerobić to na PHP.

Wygenerowane liczby chcę zakodować w mcrypt i przesłać do innego skryptu, rozkodować i sprawdzić czy wygenerowane liczby są prawidłowe (IMG:style_emoticons/default/smile.gif) Algorytm numeru PESEL idealnie się do tego nadaje, jednak nie wiem jak wygenerować PESEL w PHP. Podaję kod w JS który znalazłem:

Kod
function getDigit()
{
    return Math.floor(Math.random() * 10);
}
function calcPesel(date, sex)
{
    var wagi = new Array (1, 3, 7, 9, 1, 3, 7, 9, 1, 3);

    var fullYear = date.getFullYear();
    var y=fullYear % 100;
    var m=date.getMonth()+1;
    var d=date.getDate();
    
    if (fullYear>=1800 && fullYear<=1899){
        m += 80;
    } else
    if (fullYear>=2000 && fullYear<=2099){
        m += 20;
    } else
    if (fullYear>=2100 && fullYear<=2199){
        m += 40;
    } else
    if (fullYear>=2200 && fullYear<=2299){
        m += 60;
    }
    
    var cyfry = new Array (Math.floor(y/10),y%10,Math.floor(m/10),m%10,Math.floor(d/10),d%10);
    for (var i = cyfry.length; i < wagi.length-1; i++)
        cyfry[i] = getDigit();
    if (sex == 'M'){
        cyfry[wagi.length-1] = getLetter('13579');
    } else if (sex == 'F'){
        cyfry[wagi.length-1] = getLetter('02468');
    } else {
        cyfry[wagi.length-1] = getDigit();
    }
        
    var cyfra_kontrolna = 0;
    for (var i=0; i<cyfry.length; i++)
        cyfra_kontrolna += wagi[i] * cyfry[i];
    cyfra_kontrolna = (10 - (cyfra_kontrolna % 10)) % 10;
                
    var r = '';
    for (var i=0; i<cyfry.length; i++)
        r += String(cyfry[i]);
    r += String(cyfra_kontrolna);    
    return r;
}
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Elber
post
Post #2





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


OK (IMG:style_emoticons/default/wink.gif) Więc próbuję, mam coś takiego:

  1. <?php
  2.  
  3. function getDigit()
  4. {
  5. return floor(rand() * 10);
  6. }
  7.  
  8. function getLetter($letters)
  9. {
  10. $letters = $letters || 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  11. $len = strlen($letters);
  12. $i = floor(rand() * $len);
  13. $l = $letters{$i};
  14. return l;
  15. }
  16.  
  17. function calcPesel()
  18. {
  19. $wagi = Array (1, 3, 7, 9, 1, 3, 7, 9, 1, 3);
  20.  
  21. $d=getdate();
  22. $fullYear = $d['year'];
  23. $y=$fullYear % 100;
  24. $m=$d['mon']+1;
  25. $d=$d['mday'];
  26.  
  27. if ($fullYear>=1800 && $fullYear<=1899){
  28. $m += 80;
  29. } else
  30. if ($fullYear>=2000 && $fullYear<=2099){
  31. $m += 20;
  32. } else
  33. if ($fullYear>=2100 && $fullYear<=2199){
  34. $m += 40;
  35. } else
  36. if ($fullYear>=2200 && $fullYear<=2299){
  37. $m += 60;
  38. }
  39.  
  40. $cyfry = Array (floor($y/10),$y%10,floor($m/10),$m%10,floor($d/10),$d%10);
  41. for ($i = strlen($cyfry); $i < strlen($wagi)-1; $i++)
  42. $cyfry[$i] = getDigit();
  43.  
  44. $cyfry[strlen($wagi)-1] = getDigit();
  45.  
  46. $cyfra_kontrolna = 0;
  47. for ($i=0; $i<strlen($cyfry); $i++)
  48. $cyfra_kontrolna += $wagi[$i] * $cyfry[$i];
  49. $cyfra_kontrolna = (10 - ($cyfra_kontrolna % 10)) % 10;
  50.  
  51. $r = '';
  52. for ($i=0; $i<strlen($cyfry); $i++)
  53. $r += $cyfry[$i];
  54. $r += $cyfra_kontrolna;
  55. return $r;
  56. }
  57.  
  58.  
  59. echo calcPesel();
  60.  
  61. ?>


I błędy :
Kod
Warning: strlen() expects parameter 1 to be string, array given in pesel.php on line 41
Warning: strlen() expects parameter 1 to be string, array given in pesel.php on line 41
Warning: strlen() expects parameter 1 to be string, array given in pesel.php on line 41
Warning: strlen() expects parameter 1 to be string, array given in pesel.php on line 44
Warning: strlen() expects parameter 1 to be string, array given in pesel.php on line 47
Warning: strlen() expects parameter 1 to be string, array given in pesel.php on line 52 0



----Edit:

Trochę pozamieniałem to z tym strlen i teraz mam kod:
  1. <?php
  2.  
  3. function getDigit()
  4. {
  5. return floor(rand() * 10);
  6. }
  7.  
  8. function calcPesel(){
  9. $wagi = Array (1, 3, 7, 9, 1, 3, 7, 9, 1, 3);
  10.  
  11. $d=getdate();
  12. $fullYear = $d['year'];
  13. $y=$fullYear % 100;
  14. $m=$d['mon']+1;
  15. $d=$d['mday'];
  16.  
  17. if ($fullYear>=1800 && $fullYear<=1899){
  18. $m += 80;
  19. } else
  20. if ($fullYear>=2000 && $fullYear<=2099){
  21. $m += 20;
  22. } else
  23. if ($fullYear>=2100 && $fullYear<=2199){
  24. $m += 40;
  25. } else
  26. if ($fullYear>=2200 && $fullYear<=2299){
  27. $m += 60;
  28. }
  29.  
  30. $cyfry = Array (floor($y/10),$y%10,floor($m/10),$m%10,floor($d/10),$d%10);
  31. for ($i = $cyfry; $i < $wagi-1; $i++){
  32. $cyfry[$i] = getDigit();
  33. $cyfry[$wagi-1] = getDigit();
  34. }
  35.  
  36. $cyfra_kontrolna = 0;
  37. for ($i=0; $i<$cyfry; $i++)
  38. $cyfra_kontrolna .= $wagi[$i] * $cyfry[$i];
  39. $cyfra_kontrolna = (10 - ($cyfra_kontrolna % 10)) % 10;
  40.  
  41. $r = '';
  42. for ($i=0; $i<$cyfry; $i++)
  43. $r .= $cyfry[$i];
  44. $r .= $cyfra_kontrolna;
  45. return $r;
  46. }
  47.  
  48. ?>


I błąd:
Kod
Fatal error: Unsupported operand types in pesel.php on line 31


Ten post edytował Elber 9.11.2011, 11:54:33
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 19:36