php 随机三位数字,PHP实现生成随机码
本文主要和大家分享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实现生成随机码相关推荐
- shell实例第3讲:获取随机8位数字
获取随机8位数字常用三种方法: 方法一: echo $RANDOM |cksum |cut -c 1-8 说明: (1)shell cksum 命令用于检查文件的CRC是否正确. 确保文件从一个系统传 ...
- 某城市电话号码由三部分组成,分别是: 地区码—— 空白或三位数字; 前缀—— 非‘0’或‘1’开头的三位数字; 后缀—— 4位数字。
软件测试技术(第二版) 题目: 某城市电话号码由三部分组成,分别是: 地区码-- 空白或三位数字: 前缀-- 非'0'或'1'开头的三位数字: 后缀-- 4位数字. 假定被测程序能接受一切符合上述规定 ...
- 随机8位数字和字母组合的恶性U盘病毒的分析
由于病毒屏蔽 带有"病毒"字样的窗口 所以改一下帖子的名字 最近发现很多人出现了打不开杀毒软件 反病毒工具 甚至带有病毒字样的窗口 今天就接到了这样的一个样本 先前 我发的那个一个 ...
- python组成不重复的三位数是多少_超星Python 练习实例1-组成多少个互不相同且无重复的三位数字...
数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 程序源代码: #!/u ...
- js 数字递增递减_js验证连续两位数字递增或递减和连续三位数字相同
验证 function isPassword(){//连续三位数字相同 var str = $("#testid").val(); //var patrn=/(.)*(.)\2{2 ...
- 求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中个.十位数 ...
- mysql 补全三位数字,根据数字大小排序 LPAD CONCAT
mysql 补全三位数字,根据数字大小排序 LPAD CONCAT 一.需求 比如我有这样一些数据 id category_id sort_id word 1 2 10 人民 2 3 2 群众 3 5 ...
- C++语言编写程序:输入电话号码,对电话号码的合法性进行检查,输出是否合法,不合法在屏幕上输出错误原因。电话号码合法要求:电话号码由三部分构成地区码:空白或三位数字前缀码:非“0“或”1”
一.题目:C++语言编写程序:输入电话号码,对电话号码的合法性进行检查,输出是否合法,不合法在屏幕上输出错误原因.电话号码合法要求:电话号码由三部分构成地区码:空白或三位数字前缀码:非"0& ...
- 输入任意一个三位数字,将其各位数字反序输出(例如,输入123,输出321)。
#include<stdio.h> int main( ) { int num1, num2; int a,b,c; /*分别表示输入的三位数的百位.十位. 个位上的数字*/ printf ...
最新文章
- shell变量,环境变量配置文件,管道符
- html禁止f12键代码,网站禁用f12 禁止调试代码方法
- [BZOJ 2555] SubString
- linux安装oracle 操作系统内核参数 aio,Oracle Study之案例--安装Oracle内核参数配置
- 【拔刀吧少年】之循环三兄弟for while until
- 六、springboot(三)配置双数据源
- mysql format row_MySQL之InnoDB存储引擎:Row Format行格式
- Leetcode--268. 缺失数字
- 2021-2025年中国电子风扇速度控制器行业市场供需与战略研究报告
- 陕西神木市一煤矿发生冒顶事故 约20人被困井下
- 极风云五里界IDC数据中心架构方案
- java scjp考试_通过Java认证 SCJP 考试之精辟总结
- 逻辑表达式三种化简方法
- GD32F450替换STM32F429
- 深度至尊 GHOST XP SP3 纯净版 V4.0
- Java poi生成Excel加密文件
- 阿里云最新最全扩容方法
- Mysql 报错Duplicate entry '值' for key '字段名'的解决
- BRD、MRD 和 PRD 之间的区别--学习记录
- 国科大学习资料--模式识别与机器学习(黄庆明)--第一次随堂测答案(期末必看)
热门文章
- 关于jSignature签名时笔划偏移的问题
- 理解Go的Context机制
- kafka max.poll.records
- echart 乡镇地图 地图数据在线生成工具_自定义样式生成工具
- SPDK block device 及其编程的简单介绍
- 查询服务器中所有ddl文件,给定一个COM DLL,提取所有类的CLSID和相应的接口名称...
- ESP8266 + WS2812 颜色、亮度控制
- SCIM安装万能五笔
- 微软投屏器 android,[图]微软Your Phone新功能:可同时投屏多款Android应用
- 数据分析中如何清洗数据?