为每个用户

时间:2018-01-17 05:42:35

标签: php mysql laravel

我想知道如何在PHP和SQL中为每个用户生成一个唯一的随机代码。此代码将用于用户的网址'网页。

例如,网站https://www.blablacar.fr/使用网址https://www.blablacar.fr/user/show/random-unique-code-for-each-user 访问该用户的个人资料。

我想我应该使用uniqid php函数并将其存储在数据库中。但我不知道有更好的方法可以这样做。

非常感谢你的帮助。

6 个答案:

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

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

答案 5 :(得分:0)

您可以使用base_convert()函数生成唯一ID

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

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