[php] ElfProef

Pagina: 1
Acties:
  • 599 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

Anoniem: 46697

Topicstarter
Ik wil graag een giro en/of bankrekeningnummer verifiëren.
Weet iemand hoe dit te doen in PHP?

Dank

Acties:
  • 0 Henk 'm!

  • Paxlie
  • Registratie: Oktober 2000
  • Laatst online: 23-11-2024

Paxlie

chaos en inslag

wat wil je verifieren dan? of het nummer bestaat, of dat het een correct nummer zou kunnen zijn? Dus dat je alleen de input mask bekijkt. Laatste is vrij simpel. Dan hoef je alleen te bekijken hoe het eruit ziet. Eerst is volgens mij onmogelijk

Wie werd waar wanneer geboren en waarom werd hij door wie hoe genoemd?
braque© zijn is een keuze


Acties:
  • 0 Henk 'm!

  • Krypt
  • Registratie: April 2000
  • Laatst online: 27-05 20:36
http://www.delphi-gg.nl/F...ng_controlleer_module.htm

ff zoeken met google...

[edit]
Moet je wel ff zelf omschrijven naar PHP

Pvouput live


Acties:
  • 0 Henk 'm!

  • flat
  • Registratie: Mei 2000
  • Niet online
je moet zeg maar 't eerste getal vermenigvuldigen met 1, 't tweede met 2, 't derde met 3, enz
en dan al die getallen optellen, en delen door 11
komt daar 'n heel getal uit, dan is 't een geldig rekeningnummer (iig bij de postbank)

edit: ik lees net ergens dat je 't eerste getal met vermenigvuldigen met 9, 't tweede met 8, enz
bij mijn rekeningnummer kloppen beide methoden :D

"Happiness is a way of travel, not a destination."
--Roy Goodman


Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 03-02 23:18

D2k

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

Anoniem: 46697

Topicstarter
ik zoek wel ff op "explode"...
of zoiets...

Acties:
  • 0 Henk 'm!

Anoniem: 46697

Topicstarter
$array = explode("-", $_GET[rekeningnr]);
$rek1 = $array[0];
$rek2 = $array[1];
$rek3 = $array[2];

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Anoniem: 46697 schreef op 31 juli 2002 @ 11:54:
$array = explode("-", $_GET[rekeningnr]);
$rek1 = $array[0];
$rek2 = $array[1];
$rek3 = $array[2];
je bedoelt zeker:

PHP:
1
list( $rek1, $rek2, $rek3 ) = explode( '-', $_GET[ 'rekeningnr' ] );


Maar nee dat is niet een juiste de methode voor het antwoord op je originele vraag

Acties:
  • 0 Henk 'm!

  • ajvdvegt
  • Registratie: Maart 2000
  • Laatst online: 29-03 23:34
Flat© schreef op 31 juli 2002 @ 11:43:
edit: ik lees net ergens dat je 't eerste getal met vermenigvuldigen met 9, 't tweede met 8, enz
bij mijn rekeningnummer kloppen beide methoden :D
Bij mij klopt alleen de tweede, dus die zal het wel zijn.

I don't kill flies, but I like to mess with their minds. I hold them above globes. They freak out and yell "Whooa, I'm *way* too high." -- Bruce Baum


Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 17-04 23:10
Heb ik vroeger eens gemaakt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?PHP
error_reporting(E_ALL);
if (isset($_GET['nummer']) && $_GET['nummer'] != ""){
    echo "<B>".$nummer."</B><BR>";
    $totaal = 0;
    $len = strlen($_GET['nummer']);
    $val = $len;
    if ($len == 9 || $len == 10){
        for ($a = 0; $a < $len; $a++){
            $num = substr($_GET['nummer'],$a,1);
            if ($num != "."){
                $totaal = $totaal + ($num * $val);
                $val--;
            }
            if ($a == ($len - 2)){
                $check = (($totaal/11)-(round($totaal/11)))*11;
                echo "Checkvalue = <B>".$check."</B><BR>";
                if (substr($_GET['nummer'],8,1) == (string)$check && $len == 9){
                    $type = "Sofinummer";
                }
            }
            if ($a == ($len-1) && ((round($totaal/11)-($totaal/11))*11) == 0){
                $type = "Bankrekeningnummer";
            }
        }
        if (!isset($type)) $type = "invalid";
    }
    echo "Dit is een ".$type;
} else {
    echo "Roep aan met <I>nummer.php?nummer=rekeningnummer</I> of\n<BR> <I>nummer.php?nummer=sofinummer</I> om te checken.";
}
?>


ohw, postbank rekeningnummers zijn trouwens niet te controleren want dat zijn gewoon elkaar opvolgende nummers.

Acties:
  • 0 Henk 'm!

Anoniem: 46697

Topicstarter
Waarom krijg ik hier geen reslutaat: (alles is goed)

<script type="text/javascript">
function toUnicode(elmnt,content)
{
if (content.length==elmnt.maxLength)
{
next=elmnt.tabIndex
if (next<document.forms[0].elements.length)
{
document.forms[0].elements[next].focus()
}
}
}
</script>
</head>
<body>
<form method="post" name="bankreknr">

<input size="2" tabindex="1" name="1" maxlength="2" onkeyup="toUnicode(this,this.value)">

<input size="2" tabindex="2" name="2" maxlength="2" onkeyup="toUnicode(this,this.value)">

<input size="2" tabindex="3" name="3" maxlength="2" onkeyup="toUnicode(this,this.value)">

<input size="3" tabindex="4" name="4" maxlength="3" onkeyup="toUnicode(this,this.value)">
<input type="submit" name="Submit" value="Check">
</form>

<?
$bankrekeningnummer="$_POST[1]$_POST[2]$_POST[3]$_POST[4]";
$elfproef = 0;

for ($k=0; $k<=8; $k++){
$elfproef += $$bankrekeningnummer{$k} * (9-$k);
}

if (isset($bankrekeningnummer) && $bankrekeningnummer!=""){
echo $bankrekeningnummer.' is '.($elfproef%11 == 0 ? 'onjuist' : 'juist');
}
?>

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
error_reporting( E_ALL );

Acties:
  • 0 Henk 'm!

Anoniem: 17495

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
function elfProef($input) {
         $return = '';
         if ((!preg_match("!^[0-9]{9}$!ie", $input)) || (strlen($input) <> 9)) { return false; }
         else {
               for ($i=1;$i<=10;$i++) {
                    $nrParts = (substr((int)$input, ($i -1), 1) * (10 - $i));
                    $return = ($return + ($nrParts));
               }

               return (($return % 11) == 0) ? true : false ;
         }
}
?>

Excuses :)
Had niet gezien dat M4rt1nvW al brokken had opgediend.

Acties:
  • 0 Henk 'm!

Anoniem: 46697

Topicstarter
echo "Checkvalue = <B>".$check."</B><BR>";
Goed script!
Maar wat doet regel 17?

Acties:
  • 0 Henk 'm!

  • flat
  • Registratie: Mei 2000
  • Niet online
$check echo'en met wat html eromheen?

"Happiness is a way of travel, not a destination."
--Roy Goodman


Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Goed script ?

Kom op zeg ...

1/ $return initen op een string
2/ [0-9] = \d
3/ de 'e' modifier ???
4/ <> moet gewoon != zijn
5/ else is totaal on nodig ..
6/ waarom van 1-10 en dan zo lastig doen met nog een 1 van de $i aftrekken ?
7/ substr gebruik waar niet nodig
8/ int cast die totaal onnodig is
9/ op regel 8 staan 4 overbodige haakjes (net als op regel 4 btw, waar ook nog es 2 accolades teveel staan
10/ regel 11 alweer 4 haakjes teveel (of 2 als je perse 'te net' wilt coden)

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Anoniem: 17495 schreef op 31 juli 2002 @ 13:49:
PHP:
7
                    $nrParts = (substr((int)$input, ($i -1), 1) * (10 - $i));

Excuses :)
Had niet gezien dat M4rt1nvW al brokken had opgediend.
Casten naar int, dan automatisch laten casten naar string en dan weer laten casten naar int....

Ermm... volgens mij is dat niet jouw bedoeling. (BTW PHP vindt het niet fout) :|


En waarom die dure preg_match? Zonde van je dure processor tijd...
Gebruik gewoon is_numeric.


ermm... zie ook punten grum... :D (volgende keer geen drinken halen tijdens posten)

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

Anoniem: 46697

Topicstarter
laat is even zien hoe jij het zou doen dan ;)

Acties:
  • 0 Henk 'm!

Anoniem: 17495

Als reactie op Grum:
Anders lees je het eerst even waar de reactie op is ....
Mijn stukje, waar je nu op reageert is even snel in elkaar gezet om een ander op weg te helpen. Verbeteren / netjes maken mag een ieder zelf doen.

Dat "Goed script" slaat op het stukje code van M4rt1nvW, wat mij ook wel duidelijk lijkt aan de hand van de regels daaronder ... (Wat doet regel 17? ... mijn stukje gaat tot regel 14)
Als je onnodig dingen af moet zeiken, doe dat dan svp even naar mij privé.

Acties:
  • 0 Henk 'm!

Anoniem: 46697

Topicstarter
en als ik nu op een giro nummer wil checken hoe werkt dit dan weet iemand dit toevallig

Acties:
  • 0 Henk 'm!

  • flat
  • Registratie: Mei 2000
  • Niet online
M4rt1nvW schreef op 31 juli 2002 @ 13:24:
ohw, postbank rekeningnummers zijn trouwens niet te controleren want dat zijn gewoon elkaar opvolgende nummers.

"Happiness is a way of travel, not a destination."
--Roy Goodman


Acties:
  • 0 Henk 'm!

Anoniem: 46697

Topicstarter
ok maar postbanknummers hebben dus wel altijd evenveel tekens

Acties:
  • 0 Henk 'm!

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Als je er al achter was dat deze check "De proef van 11" heet, waarom vraag je dan nog wat ie inhoud. Dat weet google dan toch ook voor je :?

http://www.google.com
http://www.phpfreakz.nl/library.php?sid=1578

Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 03-02 23:18

D2k

zie Glimi en de rest van de behulpzame users in dit topoc
je mag echt zelf ook wel wat doen

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.