相关疑难解决方法(0)

PHP函数生成v4 UUID

所以我一直在做一些挖掘,我一直在努力拼凑一个在PHP中生成有效的v4 UUID的函数.这是我能够来的最接近的.我在十六进制,十进制,二进制,PHP的按位运算符等方面的知识几乎不存在.此函数生成有效的v4 UUID直到一个区域.v4 UUID应采用以下形式:

xxxxxxxx-xxxx- 4 xxx- y xxx-xxxxxxxxxxxx

其中y 是8,9,A或B.这是函数失败的地方,因为它不符合它.

我希望在这个领域有比我更多知识的人可以帮助我解决这个问题并帮助我解决这个问题.

功能如下:

<?php

function gen_uuid() {
 $uuid = array(
  'time_low'  => 0,
  'time_mid'  => 0,
  'time_hi'  => 0,
  'clock_seq_hi' => 0,
  'clock_seq_low' => 0,
  'node'   => array()
 );

 $uuid['time_low'] = mt_rand(0, 0xffff) + (mt_rand(0, 0xffff) << 16);
 $uuid['time_mid'] = mt_rand(0, 0xffff);
 $uuid['time_hi'] = (4 << 12) | (mt_rand(0, 0x1000));
 $uuid['clock_seq_hi'] = (1 << 7) | (mt_rand(0, 128));
 $uuid['clock_seq_low'] = mt_rand(0, 255);

 for ($i = 0; $i < 6; …
Run Code Online (Sandbox Code Playgroud)

php uuid function

215
推荐指数
11
解决办法
18万
查看次数

生成唯一键

生成一个无法轻易猜到的唯一密钥的最佳方法是什么?

我想为帐户激活和引用目的创建一个唯一的密钥,其中包括一个校验和,以帮助防止用户轻易猜测其他用户激活或引用密钥.

另外,在PHP中是否可以创建自己的会话密钥?如果是这样,你会如何使这个独特?

任何帮助是极大的赞赏.

php

22
推荐指数
3
解决办法
5万
查看次数

在PHP/MySQL中生成唯一代码?

我正在与一个需要生成数百万字母数字代码的客户合作,这些代码用于杂志刮刮卡,瓶装奖品等.它们必须足够短以便在帽子上打印,他们希望确保不包括像1和I,0和O等模糊字符,并且必须明确存储它们以备将来使用 - 我们可以'只有一个算法可以在某人试图兑换一个时确定"有效性".最后,他们希望确保代码随机分布在一个大的"代码空间"内,这样人们就不能通过遍历字母表来猜测其他代码.

有没有指向合理有效的算法来生成这些类型的代码集?我在信封的背面刮了几下,但这个问题闻起来像是一个不知情的陷阱.

php mysql random generator serial-number

14
推荐指数
2
解决办法
1万
查看次数

使用像这样的MD5哈希的子字符串是否足够独特?

我要做的是为我网站上的文章创建一个12个字符的ID,类似于youtube处理其视频ID的方式(http://www.youtube.com/watch?v=53iddd5IcSU).现在我生成一个MD5哈希,然后像这样抓取它的12个字符:

$ArticleId = substr(MD5("Article".$currentID),10,12)
Run Code Online (Sandbox Code Playgroud)

其中$ currentID是数据库中的数字ID(例如144)

我有点偏执,我会遇到重复的$ ArticleId,但实际上这会发生什么机会?而且,由于我的数据库中的列是唯一的,如何在不抛出丑陋错误的情况下处理这种罕见的情况?

PS我制作了一个小脚本来检查第一个5000 $ ArticleId中的重复项,但没有.

编辑:我不喜欢base64_encode哈希的样子,所以我这样做:

function retryAID($currentID)
{
    $AID = substr(MD5("Article".$currentID*2),10,12);

    $setAID = "UPDATE `table` SET  `artID` =  '$AID' WHERE `id` = $currentID ";
    mysql_query($setLID) or retryAID($currentID);
}


$AID = substr(MD5("Article".$currentID),10,12);

$setAID = "UPDATE `table` SET  `artID` =  '$AID' WHERE `id` = $currentID ";
mysql_query($setAID) or retryAID($currentID);
Run Code Online (Sandbox Code Playgroud)

由于AID列是唯一的,mysql_query将抛出一个错误,retryAID函数将找到一个唯一的id ...

php md5 uniqueidentifier

8
推荐指数
2
解决办法
3082
查看次数

标签 统计

php ×4

function ×1

generator ×1

md5 ×1

mysql ×1

random ×1

serial-number ×1

uniqueidentifier ×1

uuid ×1