sql >> Database >  >> RDS >> Mysql

Voeg unieke reeksen van 8 willekeurige tekens in

Dit geeft je een willekeurige reeks van 8 tekens:

substr(str_pad(dechex(mt_rand()), 8, '0', STR_PAD_LEFT), -8);

Hier gevonden:http://www.richardlord.net/blog/php-password- beveiliging

Of als het gebruikersnaamveld uniek is, kunt u ook het volgende gebruiken:

substr(md5('username value'), 0, 8);

Hoewel het uiterst onwaarschijnlijk is, met name voor de md5, garandeert geen van beide gevallen een unieke string, dus ik zou waarschijnlijk zoiets als dit doen:

// Handle user registration or whatever...

function generatePID($sUsername) {
    return substr(md5($sUsername), 0, 8);
}

$bUnique = false;
$iAttempts = 0;

while (!$bUnique && $iAttempts < 10) {
    $aCheck = $oDB->findByPID(generatePID("username value")); // Query the database for a PID matching whats generated
    if (!$aCheck) { // If nothing is found, exit the loop
        $bUnique = true;
    } else {
        $iAttempts++;
    }
}

// Save PID and such...

... wat waarschijnlijk maar 1 'check'-query zou opleveren, misschien 2 in unieke gevallen, en zou zorgen voor een unieke string.



  1. Livechat met PHP en jQuery. Waar informatie opslaan? Mysql of bestand?

  2. Hoe te anticiperen op en te ontsnappen aan een enkel aanhalingsteken ' in orakel

  3. Hoeveel kolommen mag je (maximaal) in een MySQL-tabel hebben?

  4. Hoe DATE_FORMAT() werkt in MariaDB