我想知道如何在PHP和SQL中为每个用户生成一个唯一的随机代码。此代码将用于用户的网址'网页。
例如,网站https://www.blablacar.fr/使用网址https://www.blablacar.fr/user/show/random-unique-code-for-each-user 访问该用户的个人资料。
我想我应该使用uniqid
php函数并将其存储在数据库中。但我不知道有更好的方法可以这样做。
非常感谢你的帮助。
答案 0 :(得分:1)
https://github.com/ramsey/uuid,
ramsey / uuid是一个PHP 5.4+库,用于生成和使用RFC 4122版本1,3,4和5通用唯一标识符(UUID)。
dafult使用此包在laravel框架中生成唯一性。如果您使用laravel uniqid()
函数将为您提供所需的唯一ID,
答案 1 :(得分:1)
您可以使用UUID。正如@Shobi P P所提到的,Laravel使用了包ramsey/uuid
PHP 5.4+库,用于生成RFC 4122版本1,3,4和5通用唯一标识符(UUID)。
所以你可以导入包并使用它的函数来生成UUID
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
public function yourMethod()
{
try {
// Generate a version 1 (time-based) UUID object
$uuid1 = Uuid::uuid1();
echo $uuid1->toString() . "\n"; // i.e. e4eaaaf2-d142-11e1-b3e4-080027620cdd
} catch (UnsatisfiedDependencyException $e) {
echo 'Caught exception: ' . $e->getMessage() . "\n";
}
}
PS:
Taylor Otwell发布了poll关于是否将UUID函数包含在Str类中的信息。
答案 2 :(得分:0)
可以使用str_random(length)
函数生成随机代码。您可以生成随机代码并将当前时间戳附加到该字符串。我认为这是独一无二的。
答案 3 :(得分:0)
您可以使用当前时间生成唯一字符串。
$unique = sha1(time);
答案 4 :(得分:0)
自定义:
function generateRandomStr($length = 8) {
$UpperStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$LowerStr = "abcdefghijklmnopqrstuvwxyz";
$symbols = "0123456789";
$characters = $symbols.$LowerStr.$UpperStrl;
$charactersLength = strlen($characters);
$randomStr = null;
for ($i = 0; $i < $length; $i++) {
$randomStr .= $characters[rand(0, $charactersLength - 1)];
}
return $randomStr;
}
echo generateRandomStr(8).generateRandomStr(8);
答案 5 :(得分:0)
您可以使用base_convert()函数生成唯一ID
base_convert ( string $number , int $frombase , int $tobase )
请参阅此处的示例代码:https://txeditor.com/jh6o8d1ldsd