我正在创建用户并将其保存在我的数据库表中。 我想创建一个名为:haskey的列,其中我为每个创建的用户存储一个随机且唯一的15位字母数字字符串,以便它对每个用户都是唯一的。我该怎么做?
答案 0 :(得分:3)
Laravel内置了一个名为str_random()的辅助函数。您可以使用它来生成密钥。
str_random(15)
或者我建议您使用laravel hashids.
在项目的根目录中将此包与Composer一起使用。
$ composer require vinkla/hashids
将服务提供者添加到providers数组中的config / app.php。
Vinkla\Hashids\HashidsServiceProvider::class
如果你想要,你可以使用立面。将config / app.php中的引用添加到别名数组中。
'Hashids' => Vinkla\Hashids\Facades\Hashids::class
// You can alias this in config/app.php.
use Vinkla\Hashids\Facades\Hashids;
Hashids::encode(1);
// We're done here - how easy was that, it just works!
Hashids::decode('doyouthinkthatsairyourebreathingnow');
//这个例子很简单,有更多可用的方法。
答案 1 :(得分:1)
PHP有rand()
function generateRandomNumber($len = 16) {
$char = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
$randomNumber = '';
for ($i = 0; $i < $len; $i++) {
$randomNumber .= $char[rand(0, $len - 1)];
}
return $randomNumber;
}
随机生成的值是唯一的。
答案 2 :(得分:1)
试试这个:
<?php
$serial = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ'
.'0123456789');
$haskey = '';
foreach (array_rand($serial, 15) as $a) $haskey.= $serial[$a];
echo $haskey;
?>
插入&#39; $ haskey&#39;到数据库。虽然不保证不重复这些字符。
答案 3 :(得分:0)
您可以使用UUID Package根据RFC 4122标准创建ID,该标准对每个用户都是唯一的。 (普遍独特)
步骤1:根据您的laravel版本要求包装(以下步骤适用于Laravel 5。*)
composer require "webpatser/laravel-uuid:2.*"
第2步:修改config/app.php
并添加别名。
'aliases' => [
'Uuid' => Webpatser\Uuid\Uuid::class,
]
步骤3:现在您可以生成如下的UUID
Uuid::generate()
希望它对你有所帮助。
答案 4 :(得分:0)
自从你标记了这个Laravel后,我会给你一个Laravel解决方案。您可以轻松生成更真实的&#34;随机&#34;使用此函数的字母数字字符串:
use Illuminate\Support\Str;
$var = Str::random(15);
// $var => "kAQUxlywesTKLrP"
祝你好运!