sql >> Databáze >  >> RDS >> Mysql

Vložte jedinečné řetězce 8 náhodných znaků

Získáte náhodný řetězec 8 znaků:

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

Najdete zde:http://www.richardlord.net/blog/php-password- zabezpečení

Nebo pokud je pole uživatelského jména jedinečné, můžete také použít:

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

I když je to extrémně nepravděpodobné, zejména pro md5, ani jeden z případů nezaručuje jedinečný řetězec, takže bych pravděpodobně udělal něco takového:

// 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...

... což by pravděpodobně přineslo pouze 1 „kontrolní“ dotaz, možná 2 v jedinečných případech, a zajistilo by to jedinečný řetězec.



  1. Co znamená časové razítko v T-Sql v C#?

  2. NULL vs. `nekonečno` v typech rozsahů PostgreSQL

  3. určení nejpoužívanější množiny slov php mysql

  4. Co je NoSQL a jak se používá?