PHP生成随机文件名有多种方式,本次介绍一个在公认比较新、比较安全的随机ID函数。较老的方式一般单一使用rand函数生成随机数字,或者用md5,或者进一步使用uniqid()函数,但不论以上哪种方式,都存在可能重复的问题。我查阅了国外技术论坛,总结了一个名为unique_ID的函数,采用了目前公认较为安全、不容易出现重复的写法,优先使用random_bytes函数、openssl_random_pseudo_byte函数进行随机字符生成。

此函数可以用在各类需要生成唯一ID的场景中,一个非常普遍的场景就是上传图片名。

/**

* unique_ID

* 生成16位以上唯一ID

*

* @author Aspirant Zhang

* @param int $length 不含前缀的长度,最小16,建议20+

* @param str $prefix 前缀

* @return str $id

*/

function unique_ID($length = 16,$prefix = ''){

$id = $prefix;

$addLength = $length - 13;

$id .= uniqid();

if (function_exists('random_bytes')) {

$id .= substr(bin2hex(random_bytes(ceil(($addLength) / 2))),0,$addLength);

} elseif (function_exists('openssl_random_pseudo_bytes')) {

$id .= substr(bin2hex(openssl_random_pseudo_bytes(ceil($addLength / 2))),0,$addLength);

} else {

$id .= mt_rand(1*pow(10,($addLength)),9*pow(10,($addLength)));

}

return $id;

}

php生成游客id_PHP生成唯一ID 公认较为安全的写法 上传随机文件名相关推荐

  1. php生成游客id_PHP根据用户ID生成唯一的邀请码 | 剑花烟雨江南

    在开发中,我们可能会遇到需要生成用户唯一的邀请码,来做一些邀请活动,接下来,我们思考如何生成唯一的邀请码,且可以根据邀请码获取到用户id. 首先,我们可以考虑使用用户user_id 来生成邀请码,并生 ...

  2. 雪花算法及运用PHP,雪花算法生成全局唯一ID,参考了下网上雪花算法生成规则,机器ID和序列号自动获取 理论上毫秒可生成 1024*4096个唯一ID

    任务要求毫秒生成10000个唯一ID 研究了下twitter/snowflake的算法思想: 参考了下网上雪花算法生成规则,把数据中心和机器编号整合一起,变成10位机器ID, 机器ID和序列号自动获取 ...

  3. java0到9的字符怎么表示_java,_java 怎么生成一个0-9,a-z的一个44位字符串作为上传文件的名字,java - phpStudy...

    java 怎么生成一个0-9,a-z的一个44位字符串作为上传文件的名字 找到一个时间MD5加密的 package org.blog.controller; import java.io.File; ...

  4. Python 基于Python生成短8位唯一id解决方案

    利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六进制,所以将UUID分成8组,每4个为一组,然后通过模62(字符0-9,a-z,A-Z总数量62个字符)操作,结果作为索引取出字符 ...

  5. mysql 分布式 生成序号_分布式唯一ID生成方案

    唯一ID在业务系统中经常用到,例如数据库的唯一主键,那么唯一ID如何生成,我们这里介绍一些常见的实现方案. 字符串ID 如果采用字符串id,那么很简单,直接使用jdk自带的UUID,原始生成的是带中划 ...

  6. android唯一机器码生成方案_分布式系统唯一ID生成方案汇总

    系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结.生成ID的方法有很多,适应不同的场景.需求以及性能要求.所以有些比较复杂的系统会有多个ID生成的策略.下面就介绍一些常见 ...

  7. mysql 1100_mysql数据库选择,有1100个用户,每个用户每月生成一张表,使用中该表内每秒上传一条数据,数据量很大...

    mysql数据库,有1100个用户,每个用户每月生成一张表,用户登录在该表内每秒上传一条数据,预计每张表一个月共86W条数据,现在我搭建了mysql-cluster环境2个NDBD节点配置为8核CPU ...

  8. 雪花算法生成数字id_全局唯一iD的生成 雪花算法详解及其他用法

    SnowflakeIdWorker { // ==============================Fields========================================= ...

  9. Java 生成订单号(唯一id)方案

    1.直接使用uuid public static String getUUID() {String replaceUUID = UUID.randomUUID().toString().replace ...

最新文章

  1. python项目部署到docker_使用docker 部署python 项目
  2. Oracle数据库导入导出 imp/exp备份还原
  3. java里面数字四舍五入,Java数字的四舍五入
  4. 学习笔记:pscc2020基础
  5. rest syntax(parameters)
  6. ENVI入门系列教程---二、图像分析---12. 图像分类流程化工具
  7. java a标签实现文件下载_a标签实现文件下载 避免直接打开问题
  8. CMOS Image Sensor的DVP接口硬件设计
  9. linux yum换源(国内阿里源)
  10. termux搭建局域网web服务器
  11. 中国的程序员大部分都是diao丝,说白了就是农村进城打工的,有背景或有钱的基本都不会做程序员。
  12. Python 数据科学入门教程:Pandas
  13. opencv 阈值处理(python)
  14. python读excel表_怎么用python读取excel表格的数据
  15. matlab中floor函数,Matlab基本函数-floor函数
  16. 计算机在通风网络中的应用,普适计算在煤矿通风网络解算中的应用研究
  17. 服务改进还是先从自己改起吧
  18. input的23种type类型
  19. mysql where not in_mysql查询条件not in 和 in的区别及原因说明
  20. Basler Blaze-101开发实践(1)——实时采图

热门文章

  1. hpux 11.11 连接HDS 存储,采用HDLM管理带来的麻烦,需重启。
  2. android广播代码汇总二__有序广播
  3. android自定义View学习(二)----自定义绘图
  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的相声购票系统
  5. Git应用之eclipse解决冲突代码
  6. Hystrix是如何工作的
  7. Ubuntu14.04中踩过的坑
  8. 这几天的学习进度总结
  9. [转] Linux C语言 段错误bug的调试
  10. SPSS数据分析之列联分析与卡方检验、方差分析与LSD方法【操作详解】