Hallo,

Voor een van mijn klanten maak ik een soort webshop. Bij de betaling moet er een mogelijkheid komen voor bankoverschrijving. Daarbij moet een unieke code worden vermeld.
Wie heeft een idee hoe ik met php zo'n code kan maken? Een hash is niet wat ik zoek.

Alvast bedankt!
Chris Kortaan schreef op 28.08.2009 20:49
[quote='Mark schreef op 28.08.2009 19:52']hoezo niet gewoon time() gebruiken? Dan heb je een unieke 10 cijferige code of heb ik dat fout?


Nee. In de database kan nooit dezelfde ID worden gemaakt ;-)[/quote]
Alleen vaak is het dus wel dat het een reeks is. Het is dan dus 1,2,3,4,5,6,7,8,9 enzovoort. Dat kan ook weer voor beveiligingslekken zorgen.

<?php
function RandomKey($length) {

	$GenKey = null;
    for($a=0;$a<$length;$a++) {

        $GenKey .= chr(rand(33, 126));

    }

    return $GenKey;

}

function RandKeyCheck($key)
{
$query = "SELECT * FROM `TABEL` WHERE `KEY_COLUMN` = '$key'";
if(mysql_num_rows($query) == 0)
{
//update
} else {
return false;
}

$key = RandomKey();

if(RandKeyCheck($key) == false)
{
RandKeyCheck($key);
}


zo iets had ik zelf in gedachten. Moet je zelf mischien een beetje aanpassen.
Karl schreef op 28.08.2009 20:55
[quote='Chris Kortaan schreef op 28.08.2009 20:49'][quote='Mark schreef op 28.08.2009 19:52']hoezo niet gewoon time() gebruiken? Dan heb je een unieke 10 cijferige code of heb ik dat fout?


Nee. In de database kan nooit dezelfde ID worden gemaakt ;-)[/quote]
Alleen vaak is het dus wel dat het een reeks is. Het is dan dus 1,2,3,4,5,6,7,8,9 enzovoort. Dat kan ook weer voor beveiligingslekken zorgen.[/quote]

Mwah, nee. Je zorgt ervoor dat je kijkt of de gebruikersID past bij dat andere ID.... Lijkt me logisch ;-)
Chris Kortaan schreef op 28.08.2009 21:19
[quote='Karl schreef op 28.08.2009 20:55'][quote='Chris Kortaan schreef op 28.08.2009 20:49'][quote='Mark schreef op 28.08.2009 19:52']hoezo niet gewoon time() gebruiken? Dan heb je een unieke 10 cijferige code of heb ik dat fout?


Nee. In de database kan nooit dezelfde ID worden gemaakt ;-)[/quote]
Alleen vaak is het dus wel dat het een reeks is. Het is dan dus 1,2,3,4,5,6,7,8,9 enzovoort. Dat kan ook weer voor beveiligingslekken zorgen.[/quote]

Mwah, nee. Je zorgt ervoor dat je kijkt of de gebruikersID past bij dat andere ID.... Lijkt me logisch ;-)[/quote]
Nee, zo'n soort fout is er best wel vaak gemaakt. En ook niet op kleine dingen ofzo. Op grote belangrijke dingen ook (adres gegevens opvragen bijvoorbeeld).
Matthias schreef op 28.08.2009 19:42
Wat is de definitie van een hash?

Een hash-functie is een routine die een (meestal) grote hoeveelheid data converteert naar een kleine hoeveelheid data, waarbij de vergelijking hash(x) = hash(y) idealiter alleen klopt wanneer x = y.
<?php
function cijfercode($lengte) {
$aTekens = array_merge(range('a','z'), range('A','Z'), range(0,9));
shuffle($aTekens);

$aReturn = '';
for($i=0;$i<=$lengte;$i++) {
$aReturn .= $aTekens[$i];
}
return $aReturn;
}
?>

Een ID kan iedereen zo terugvinden. Ik weet niet of dat wel zo veilig is? Hierboven staat mijn randomcode-code. Die werkt hartstikke goed, bestaat uit kleine en grote letters en cijfers.
Jezpur schreef op 28.08.2009 21:39
Een ID kan iedereen zo terugvinden. Ik weet niet of dat wel zo veilig is?
Dat hangt ervan af of je kan programmeren ;-)

Als je security goed in elkaar zit, moet je alleen ID's kunnen opvragen waartoe je geautoriseerd bent.
@Jezpur:
Wat is de toegevoegde waarde van het for-loopje ten opzichte van

return substr($aTekens,0,$lengte);
?

Reageren