为每个用户生成随机的唯一代码

e3bfsja2  于 2021-06-21  发布在  Mysql
关注(0)|答案(6)|浏览(388)

我想知道如何在php和sql中为每个用户生成一个唯一的随机代码。此代码将用于用户网页的url。
例如,网站https://www.blablacar.fr/ 使用urlhttps://www.blablacar.fr/user/show/random-unique-code-for-each-user 访问该用户的配置文件。
我想我应该用 uniqid php函数并将其存储在数据库中。但我不知道有没有更好的办法。
非常感谢你的帮助。

thigvfpy

thigvfpy1#

可以使用base\u convert()函数生成唯一的id

base_convert ( string $number , int $frombase , int $tobase )

请参见此处的示例代码:https://txeditor.com/jh6o8d1ldsd

1sbrub3j

1sbrub3j2#

可以使用当前时间生成唯一的字符串。

$unique = sha1(time);
h22fl7wq

h22fl7wq3#

可以使用 str_random(length) 功能。您可以生成随机代码并将当前时间戳附加到该字符串。我认为这是独一无二的。

plupiseo

plupiseo4#

https://github.com/ramsey/uuid,
ramsey/uuid是一个php5.4+库,用于生成和使用rfc4122版本1、3、4和5通用唯一标识符(uuid)。
dafult使用这个包在laravel框架中生成uniqueid。如果你用的是拉威尔 uniqid() 函数将为您提供所需的唯一id,

xqkwcwgp

xqkwcwgp5#

你可以利用uuid。正如@shobi p laravel所提到的,它使用包 ramsey/uuid PHP5.4+库,用于生成RFC4122版本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";
    }
}

附言:
taylorotwell发布了一个关于是否将uuid函数包含到str类的投票。

zbq4xfa0

zbq4xfa06#

自定义:

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);

或使用http://php.net/manual/en/function.uniqid.php

相关问题