PHP-生成唯一的随机键,如;7HzdUakp“;申请新职位

PHP-生成唯一的随机键,如;7HzdUakp“;申请新职位,php,mysql,Php,Mysql,我想生成像“7HzdUakp”这样的唯一密钥 我想把它放在数据库(mysql)中,但我想要一个几乎无限的组合 我可以使用随机函数生成它,但有时它可以生成相同的密钥两次 已解决-我根据“id”生成答案,请查看下面的答案以了解更多详细信息以下是我的操作方法: private function generateKey() { $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; $ke

我想生成像“7HzdUakp”这样的唯一密钥

我想把它放在数据库(mysql)中,但我想要一个几乎无限的组合

我可以使用随机函数生成它,但有时它可以生成相同的密钥两次

已解决-我根据“id”生成答案,请查看下面的答案以了解更多详细信息

以下是我的操作方法:

private function generateKey()
{
    $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
    $key = array();
    $alphaLength = strlen($alphabet) - 1;
    for ($i = 0; $i < 8; $i++) {
        $n = rand(0, $alphaLength);
        $key[] = $alphabet[$n];
    }
    return implode($key);
}
专用函数generateKey()
{
$alphabet='abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz1234567890';
$key=array();
$alphaLength=strlen($alphabet)-1;
对于($i=0;$i<8;$i++){
$n=兰特(0,$alphaLength);
$key[]=$alphabet[$n];
}
返回内爆($key);
}

如果您不需要生成加密安全的id,您可以使用。如果您需要更“安全”的id,请在几个小时后使用我创建的:(用于测试的javastript)

它看起来是随机的,但不是
-char\u键包含8行,其中包含60个唯一字符
-helper\u arr包含来自id-函数参数(按相反顺序)“5342”=>[2,4,3,5]
-它可以创建100000个唯一的密钥(有许多组合),但现在我正在努力升级它(不同的长密钥)

随机生成的工作原理如下:
-例如helper_arr=[1,2,3,4,5]
-键是生成的字符串键

helper\u arr[0]=1,所以:
-键[0]=字符键[1]。子字符串(0,1)或
-键[0]=字符键[1]。子字符串(10,11)或
-键[0]=字符键[1]。子字符(20,21)或
-键[0]=字符键[1]。子字符串(30,31),或
-键[0]=字符键[1]。子串(40,41)或
-键[0]=字符键[1]。子字符(50,51)或
-键[0]=字符键[1]。子串(60,61)。
(这是唯一的随机事件;))

test=函数(id){
var char_键=[
'123456789',//此处仅显示数字,因为它是随机的,用户可以创建自己的链接,第一个字符上没有数字
“LwFhy7YuEWGMH1IvoU85Jbjpkx4qN6zBmf9KtercZdQiRln2CSDXaVg3T0Ps”,
‘GTXKHTJXBB08ZWYQYIU2AGVDALVFM6SHQZNECJRM47PU5SCLKFNP9EOW1R3’,
“8QEMJ3LERDWUKSJNGIBYSF1XZ6WPVZ0NKV2GFPHAH7UMQAMJ3LERDWUKSJNGIBYSF1XZ6WPVZ0NKV2GFPHAH7UMQAMJ3LERDWK7RCX4D5”,
“G5QdYeSl0LFBjJAHCD1xnmU9VfZRi6MX2PcwsaKoqT8p3vtNhWz7u4ybgrEI”,
“J7FCCZNF6YTV58KUET1BAIR2JQH0EIADRHQZUG9KBMDNPSGLO4xVLWPY3S”,
“PyAMjsiox86zZ1vYCDwETm5SQlGK9b0rLJNV2aFtgXe4cW7IhqUpRfH3unBk”,
“H04EDQN2C89xVSICMBLW3LKSWEKAUGJ6MDIVTJFRPPH1AOZZYYNFRQ75TX”,
“9YD82VBWJ0PRUNG5SX4DHX6VZ1KZGWARS7PLFHFAUOJYTQBICMQCKMEL3NT”
];
var id=id;
var-tmp=0;
var-helper_arr=[];
而(id>0){
tmp=数学楼层(id/10);
如果(tmp==0){helper_arr.push(id-(tmp*10));break;}
助手到达推送(id-(tmp*10)+1);
id=tmp;
} 
var key=char_key[0].substr(getRandomInt(0,8),1);

对于(i=1;i
echo uniqid();
echo uniqid(null,true);
对于一个更大的数字,你所说的具有重复性的
是什么意思?@Saty这里想要一个
唯一的
随机键不要滚动你自己的,还要注意“伪随机性”。寻找一些非常可靠/安全/唯一的密钥生成。
test = function(id){
    var char_keys = [
        '123456789',//only numbers here because it's random, users can create own links without number on first char 
        'LwFhy7YuEWGMH1IvoU85Jbjpkx4qN6zBmf9KtercZdQiRln2CSDXaVg3T0Ps', 
        'GTxkHtjXbB08ZWYqyiIu2agvdAlVFM6ShQznEcJrm47pU5sCLKfNP9eow1R3',
        '8QEmj3LeRdWuKsJngiBySf1Xz6wpVZ0Nkv2GFPHah7UMqAboYtlcT9rCx4D5', 
        'G5QdYeSl0LFBjJAHCD1xnmU9VfZRi6MX2PcwsaKoqT8p3vtNhWz7u4ybgrEI', 
        'j7fCcZNF6ytv58KUET1BAiMR2JqH0eIadrhQzug9kbmDnPSGLo4xXVlWpY3s', 
        'PyAMjsiox86zZ1vYCDwETm5SQlGK9b0rLJNV2aFtgXe4cW7IhqUpRfH3unBk',
        'h04edQN2c89xVSiCMBlw3LksWEKaUguGj6mDIvTJfRpPH1AozZyYnFrq75tX',
        '9YD82VBwJ0PrIUNG5Sx4dHX6vz1kZgWaRs7plFhfAuojytqbiCmQcKMeL3nT' 
    ];
    var id = id;
    var tmp = 0;
    var helper_arr = [];
    while(id>0){
        tmp = Math.floor(id/10);
        if(tmp==0) {helper_arr.push(id-(tmp*10)); break;}
        helper_arr.push(id-(tmp*10)+1);
        id=tmp;
    } 
    var key = char_keys[0].substr(getRandomInt(0,8),1);
    for(i=1;i<helper_arr.length;i++){
        key += char_keys[i].substr((getRandomInt(1,6)*helper_arr[i])-1,1);
    }
    for(i=helper_arr.length;i<char_keys.length;i++){
        key += char_keys[i].substr((getRandomInt(1,6)*1)-1,1);
    }
    return(key);
}