Avatar billede michaeltryl Seniormester
13. april 2017 - 15:27 Der er 9 kommentarer og
1 løsning

autologin

Hej
Jeg er ved at prøve at lave et script til autologin.
Jeg har søgt lidt rundt og flere anbefaler man gemmer et unikt id i databasen, sammen med brugeren, så man kan teste på det id, fremfor at gemme kode og brugernavn i cookien.

Mit spørgsmål går på hvordan jeg sikre mig at det id som bliver lavet er unikt for hver bruger.
Avatar billede arne_v Ekspert
13. april 2017 - 15:39 #1
Foerst saa lav id som en SHA-256 hash af noget tilfaeldigt. Det goer risikoen for kollision meget meget lille.

Derefter saa saetter du bare et unikt indeks paa det felt i databasen, saa far du fejl naar du foersoeger at indsaette en duplikat vaerdi. Og kan saa bare generere en ny vaerdi og proeve igen.
Avatar billede michaeltryl Seniormester
13. april 2017 - 15:58 #2
så du mener noget i denne stil

$unik = "noget-tilfældigt";
$unik_id = hash('sha256', $unik);
Avatar billede arne_v Ekspert
13. april 2017 - 16:12 #3
Der der $unik skal saa vaere >= 32 bytes, tilfaeldigt og uforudsigeligt.
Avatar billede michaeltryl Seniormester
13. april 2017 - 16:21 #4
32 bytes? er det, det samme som 32 tegn?
Avatar billede arne_v Ekspert
13. april 2017 - 16:39 #5
Kort svar: ja naesten.

Laengere svar: med ISO-8859-1 er alle tegn 1 byte, med UTF-8 er de tegn som bruges i engelsk 1 byte mens specielle tegn er 2 eller flere bytes
Avatar billede arne_v Ekspert
13. april 2017 - 16:40 #6
http://php.net/manual/en/function.random-bytes.php kan bruges hvis du er paa PHP 7
Avatar billede michaeltryl Seniormester
13. april 2017 - 16:42 #7
ok jeg køre med UTF-8, så hvis min
$unik er mindst 34 tegn med store, små bogstaver, tal og speceial tegn, så er jeg sikker :-)

tak for hjælpen
Avatar billede arne_v Ekspert
13. april 2017 - 16:44 #8
Hvis du kan bestemme antal bytes behover du ikke engang at hashe. Formaalet med hash er at producere et fast antal bytes.
Avatar billede arne_v Ekspert
13. april 2017 - 16:46 #9
"tilfaeldigt og uforudsigeligt" betyder altsaa forskellig for forskellige brugere og forskellig fra gang til gang og svaer at gaette for andre - det er ikke trivielt at lave. Men ovenstaaende random_bytes() funktion er god nok.
Avatar billede michaeltryl Seniormester
13. april 2017 - 16:54 #10
super tak for svaret. jeg køre desværre ikke php7 endnu :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester