Unieke code
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!
Gewijzigd op 01/01/1970 01:00:00 door Aaron
Wat zoek je dan wel? Een hash moet toch voldoen lijkt mij.
Gewoon een serie getallen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$sql = mysql_query("INSERT INTO tabel (....) VALUES (....)");
if(mysql_query($sql))
{
echo 'fout';
}
else
{
$sql2 = mysql_query("SELECT * FROM tabel ORDER BY id DESC");
}
?>
$sql = mysql_query("INSERT INTO tabel (....) VALUES (....)");
if(mysql_query($sql))
{
echo 'fout';
}
else
{
$sql2 = mysql_query("SELECT * FROM tabel ORDER BY id DESC");
}
?>
en dan kan je ook nog doen met WHERE naam = ..... om cker te weten dat het klopt...
weet niet of dit een perfect ide is hoor maar zou naar mijn idee moeten werken
Bedankt!
Wel zou ik checken of je wel de goede hebt, dus met een eventuele naam die verzonden is.
SanThe schreef op 28.08.2009 15:51:
Een hash is niet gegarandeerd uniek.Wat zoek je dan wel? Een hash moet toch voldoen lijkt mij.
btw. ik weet niet wat voor en project het is,
maar vind je het ok, dat users weten hoeveel gebruikers je hebt?
want als je de ID gebruikt, dan zien zij de hoeveelste ze zijn
Gewijzigd op 01/01/1970 01:00:00 door Matthias R
hoezo niet gewoon time() gebruiken? Dan heb je een unieke 10 cijferige code of heb ik dat fout?
@ Mark: time () geeft per seconde een unieke waarde. Als dus twee users in dezelfde seconde op het knopje klikken is de code niet uniek.
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 ;-)
Chris Kortaan schreef op 28.08.2009 20:49:
Nee. In de database kan nooit dezelfde ID worden gemaakt ;-)
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 ;-)
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.
Code (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
33
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
33
<?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);
}
[/code]
zo iets had ik zelf in gedachten. Moet je zelf mischien een beetje aanpassen.
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);
}
[/code]
zo iets had ik zelf in gedachten. Moet je zelf mischien een beetje aanpassen.
Gewijzigd op 01/01/1970 01:00:00 door Stefan
Karl schreef op 28.08.2009 20:55:
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.
Chris Kortaan schreef op 28.08.2009 20:49:
Nee. In de database kan nooit dezelfde ID worden gemaakt ;-)
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 ;-)
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.
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:
Mwah, nee. Je zorgt ervoor dat je kijkt of de gebruikersID past bij dat andere ID.... Lijkt me logisch ;-)
Karl schreef op 28.08.2009 20:55:
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.
Chris Kortaan schreef op 28.08.2009 20:49:
Nee. In de database kan nooit dezelfde ID worden gemaakt ;-)
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 ;-)
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.
Mwah, nee. Je zorgt ervoor dat je kijkt of de gebruikersID past bij dat andere ID.... Lijkt me logisch ;-)
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.
Code (php)
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:
Dat hangt ervan af of je kan programmeren ;-)Een ID kan iedereen zo terugvinden. Ik weet niet of dat wel zo veilig is?
Als je security goed in elkaar zit, moet je alleen ID's kunnen opvragen waartoe je geautoriseerd bent.
Wat is de toegevoegde waarde van het for-loopje ten opzichte van
?