undskyld jeg har været så langsom til at svare herinde.
#DeeDawg tak for hjælpen! det virkede perfekt, vil du have points?
Kan en af jer se hvad problemet ved dette stykke kode er? Skal generere en sikkerhedskode, som skal opdateres hver gang man logger ind, men kan ikke rigtig få min update funktion til at virke...
$newVerify = $mysqli->prepare('UPDATE users SET verify=? WHERE id=?') or die ('Could not updata verification num'); $checkLogin->bind_param('si', $randomNum,$loginId); $randomNum = generateRandomNum(); $checkLogin->execute();
// den nye sikkerhedskode sættes i denne cookie setcookie("verifyCode", $randomNum, time() + 60 * 60 * 24 * 365);
prøvede for en sikkerheds skyld at udskrive sikkerhedskoden: print $randomNum; hvilket virkede! variabel $loginId virker også korrekt så det må vel være noget med rækkefølgen sætningerne eller selve sql statementen?
$loginId bliver sat længere oppe og indeholder det rigtige id...
ooooh sh*t!! har lige opdaget hvor problemet lå nu.
$newVerify = $mysqli->prepare('UPDATE users SET verify=? WHERE id=?') or die ('Could not updata verification num'); $checkLogin->bind_param('si', $randomNum,$loginId); $randomNum = generateRandomNum(); $checkLogin->execute();
skal selvfølgelig ændres så der står $newVerify hele vejen ned i stedet for $checkLogin, som er et statement længere oppe.. så den har bare executet en gang til :S
eehh er stødt på endnu et "underligt" problem nu i forbindelse med den sikkerhedskode der sættes ud fra et random tal. Den blev sat ligesom i ovenstående kode og derefter i en cookie sådan her: setcookie("verifyCode", $randomNum, time() + 60 * 60 * 24 * 365);
men af en eller anden grund vil det random tal i databasen gerne være: 2147483647 hver gang.. og det random tal i min cookie bliver et nyt når man logger ind. har prøvet at slette al browser data for at få cookies væk.. så prøvede jeg igen, men stadig samme tal i databasen og et helt andet i min cookie.. synes det er MEGET underligt da dette tal kommer fra den samme variabel (og funktion) altså: $randomNum = generateRandomNum(); hvordan kan det blive 2 forskellige tal??? og hvordan kan den lave det samme tal til databasen igen??
Udover at 2147483647 er et 'magisk' tal - et af ganske få kendte, dobbelte Mersenne primtal - så er det den største værdi en 32bit integer kan have. Større tal kan PHP ikke arbejde med =)
"og hvordan kan den lave det samme tal til databasen igen??" >> Det kan under alle omstændigheder sagtens lade sig gøre. Der findes ingen PHP-funktioner, som genererer et ægte tilfældigt tal - og selvom der gjorde, betyder 'tilfældig' ikke det samme som 'unik'.
To (ægte eller uægte) tilfældige tal kan sagtens komme lige efter hinanden. Statisktisk går der så bare længere, før det kommer op igen =)
Ja ved godt det var en dum måde at gøre det på.. det er ændret nu. Har også tilføjet random bogstaver ind i den genererede sikkerhedskode og det hele funger nu.
Det lader ikke til at DeeDawg ville have points så jeg lukker bare tråden. Tak for hjælpen
nåå ja kunne jeg selvfølgelig også.. microtime er vel så tidspunktet i microsekunder ?
Synes godt om
Ny brugerNybegynder
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.