本文主要和大家分享PHP实现生成随机码,小伙伴让写一个生成5位随机码的函数,要求:可包含数字、字母大小写,代码尽量短。

解题思路

(1) . 第一思路

都是印象中匹配ASCII码进行随机读取的实现方法,此处可提供一个方法作为参考:function get_rand_ascii($pw_length = 5){

$randpwd = '';

for ($i = 0; $i < $pw_length; $i++)

{ $randpwd .= chr(mt_rand(33, 99));

} return $randpwd;

}

(2) . 第二思路

1.定义随机数组,内含能够使用的所有字符function getRandomString($length=5) {

//可任意添加需要的字符

$chars = array( "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"

); $charsLen = count ( $chars ) - 1;

shuffle ( $chars ); // 将数组打乱

$output = ""; for($i = 0; $i < $length; $i ++)

{ $output .= $chars [mt_rand ( 0, $charsLen )];

} return $output;

}提示:此类的代码,建议去除可能引起歧义的字符,如:1、I、l、0、o、O、9、q.

缺点:5个字符没有重复

2.比较上述 1 中的数组形式,设计字符串形式参考如下:function get_pass( $length = 8 ) {

// 密码字符集,可任意添加你需要的字符

$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|';

$password = ''; for ( $i = 0; $i < $length; $i++ ) { // 这里提供两种字符获取方式

// 第一种是使用 substr 截取$chars中的任意一位字符;

// 第二种是取字符数组 $chars 的任意元素

// $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);

$password .= $chars[ mt_rand(0, strlen($chars) - 1) ];

} return $password;

}

(3) . 第三思路

发现的新思路,可使用加密算法进行获取public function getRand(){

$rand = rand(10000,100000);

$str = substr(base64_encode($rand), 0, 5); return $str;

}提示:md5()函数只有数字和小写的字母

发现:base64_encode()可以满足要求

拓展延伸针对于PHP设计,一般的随机码可用于验证码、分享码的生成,着重注意位数的限制,必要情况下,保证该随机码的唯一性.

password_hash 的使用(PHP>5.5)

可用于用户的密码加密存储,不过有一点需注意:如果数据库迁移,对于java或.net语言将难以适用.$password = 'password1232456';//前端 获取的原始密码

//数据库存放的 使用BCRYPT算法加密的密码

//此处仅为测试,实际应用时应从数据表中查询获得

//$db_pass = '$2y$10$2vJJC.rb/swAUnTfc9B94.l/ix75kiZHvOZFpu0Dd8uzp07YWlj4q';

$db_pass = password_hash($password, PASSWORD_BCRYPT); if (password_verify($password , $db_pass)){ echo "密码匹配";

}else{ echo "密码错误";

}

相关推荐:

php 随机三位数字,PHP实现生成随机码相关推荐

  1. shell实例第3讲:获取随机8位数字

    获取随机8位数字常用三种方法: 方法一: echo $RANDOM |cksum |cut -c 1-8 说明: (1)shell cksum 命令用于检查文件的CRC是否正确. 确保文件从一个系统传 ...

  2. 某城市电话号码由三部分组成,分别是:      地区码—— 空白或三位数字;      前缀—— 非‘0’或‘1’开头的三位数字;      后缀—— 4位数字。

    软件测试技术(第二版) 题目: 某城市电话号码由三部分组成,分别是: 地区码-- 空白或三位数字: 前缀-- 非'0'或'1'开头的三位数字: 后缀-- 4位数字. 假定被测程序能接受一切符合上述规定 ...

  3. 随机8位数字和字母组合的恶性U盘病毒的分析

    由于病毒屏蔽 带有"病毒"字样的窗口 所以改一下帖子的名字 最近发现很多人出现了打不开杀毒软件 反病毒工具 甚至带有病毒字样的窗口 今天就接到了这样的一个样本 先前 我发的那个一个 ...

  4. python组成不重复的三位数是多少_超星Python 练习实例1-组成多少个互不相同且无重复的三位数字...

    数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 程序源代码: #!/u ...

  5. js 数字递增递减_js验证连续两位数字递增或递减和连续三位数字相同

    验证 function isPassword(){//连续三位数字相同 var str = $("#testid").val(); //var patrn=/(.)*(.)\2{2 ...

  6. 求A,B 输入三位数字N,求两位数AB(其中个位数字为B,十位数字为A,且有0 #60 A #60 B #60 9)。

    [问题描述] 输入三位数字N,求两位数AB(其中个位数字为B,十位数字为A,且有0 < A < B < 9).使得下列等式成立: AB x BA = N 其中BA是把AB中个.十位数 ...

  7. mysql 补全三位数字,根据数字大小排序 LPAD CONCAT

    mysql 补全三位数字,根据数字大小排序 LPAD CONCAT 一.需求 比如我有这样一些数据 id category_id sort_id word 1 2 10 人民 2 3 2 群众 3 5 ...

  8. C++语言编写程序:输入电话号码,对电话号码的合法性进行检查,输出是否合法,不合法在屏幕上输出错误原因。电话号码合法要求:电话号码由三部分构成地区码:空白或三位数字前缀码:非“0“或”1”

    一.题目:C++语言编写程序:输入电话号码,对电话号码的合法性进行检查,输出是否合法,不合法在屏幕上输出错误原因.电话号码合法要求:电话号码由三部分构成地区码:空白或三位数字前缀码:非"0& ...

  9. 输入任意一个三位数字,将其各位数字反序输出(例如,输入123,输出321)。

    #include<stdio.h> int main( ) { int num1, num2; int a,b,c; /*分别表示输入的三位数的百位.十位. 个位上的数字*/ printf ...

最新文章

  1. shell变量,环境变量配置文件,管道符
  2. html禁止f12键代码,网站禁用f12 禁止调试代码方法
  3. [BZOJ 2555] SubString
  4. linux安装oracle 操作系统内核参数 aio,Oracle Study之案例--安装Oracle内核参数配置
  5. 【拔刀吧少年】之循环三兄弟for while until
  6. 六、springboot(三)配置双数据源
  7. mysql format row_MySQL之InnoDB存储引擎:Row Format行格式
  8. Leetcode--268. 缺失数字
  9. 2021-2025年中国电子风扇速度控制器行业市场供需与战略研究报告
  10. 陕西神木市一煤矿发生冒顶事故 约20人被困井下
  11. 极风云五里界IDC数据中心架构方案
  12. java scjp考试_通过Java认证 SCJP 考试之精辟总结
  13. 逻辑表达式三种化简方法
  14. GD32F450替换STM32F429
  15. 深度至尊 GHOST XP SP3 纯净版 V4.0
  16. Java poi生成Excel加密文件
  17. 阿里云最新最全扩容方法
  18. Mysql 报错Duplicate entry '值' for key '字段名'的解决
  19. BRD、MRD 和 PRD 之间的区别--学习记录
  20. 国科大学习资料--模式识别与机器学习(黄庆明)--第一次随堂测答案(期末必看)

热门文章

  1. 关于jSignature签名时笔划偏移的问题
  2. 理解Go的Context机制
  3. kafka max.poll.records
  4. echart 乡镇地图 地图数据在线生成工具_自定义样式生成工具
  5. SPDK block device 及其编程的简单介绍
  6. 查询服务器中所有ddl文件,给定一个COM DLL,提取所有类的CLSID和相应的接口名称...
  7. ESP8266 + WS2812 颜色、亮度控制
  8. SCIM安装万能五笔
  9. 微软投屏器 android,[图]微软Your Phone新功能:可同时投屏多款Android应用
  10. 数据分析中如何清洗数据?