介绍
如何使用PHP生成随机码?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
PHP是什么语言
PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:超文本预处理器)的缩写。PHP是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。
<强>解题思路强>
<强> (1)。第一思路强>
都是印象中匹配ASCII码进行随机读取的实现方法,此处可提供一个方法作为参考:
function get_rand_ascii (=pw_length 美元;5){ 时间=美元才能randpwd & # 39; & # 39;; for 才能;($小姐:=,0;,美元小姐:& lt;, pw_length;美元,美元我+ +),{ ,,,randpwd 美元。=,空空(mt_rand(33岁,99)); ,,} return 才能;randpwd美元; }
<强> (2)。第二思路强>
1。定义随机数,组内含能够使用的所有字符
function getRandomString(长度=5美元),{//可才能任意添加需要的字符 时间=美元才能chars 阵列( ,,,“a",,“b",,“c",,“d",,“e",,“f",,“g",,“h",,“我,,“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",,“我,,“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 “,“; ,,($小姐:=,0;,美元小姐:& lt;,长度;美元,美元小姐:+ +),{ ,,,output 美元。=,chars 美元;[mt_rand (0,大敌;charsLen 美元;)]; ,,} return 才能;美元输出; }
提示:此类的代码,建议去除可能引起歧义的字符,如:1、我,l, 0, o, o, 9日,q。
缺点:5个字符没有重复
2。比较上述1中的数组形式,设计字符串形式参考如下:
function get_pass (=, length 美元,8,),{//才能,密码字符集,可任意添加你需要的字符=美元才能chars & # 39; abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ! @ # $ % ^, * () -_ [] {} & lt;祝辞~ +=,。/? | & # 39;; 时间=美元才能password & # 39; & # 39;; for 才能;(,小姐:美元=,0;,美元小姐:& lt;,长度;美元,美元我+ +,),{ ,,,//,这里提供两种字符获取方式 ,,,//,第一种是使用,substr 截取识字课中美元的任意一位字符; ,,,//,第二种是取字符数组,chars 美元;的任意元素 ,,,//,password 美元。=,substr($字符,mt_rand (0,, strlen($字符),安康;1),,1); ,,,password 美元。=,$字符[,mt_rand (0,, strlen($字符),安康;1),); ,,} return 才能;美元密码; }
<强> (3)。第三思路强>
发现的新思路,可使用加密算法进行获取
public function getRand () { 美元才能rand =,兰德(10000、100000); 美元才能str =, substr (base64_encode(兰德美元),,0,,5); return 才能,str美元; }
提示:<代码> md5() 代码>函数只有数字和小写的字母
发现:<代码> base64_encode() 代码>可以满足要求
<>强拓展延伸强>
针对于PHP设计,一般的随机码可用于验证码,分享码的生成,着重注意位数的限制,必要情况下,保证该随机码的唯一性。
<代码> password_hash> 代码的使用(PHP> 5.5)
可用于用户的密码加密存储,不过有一点需注意:如果数据库迁移,对于java或. net语言将难以适用。
password 美元;=,& # 39;password1232456& # 39;;//前端,获取的原始密码//数据库存放的,使用BCRYPT算法加密的密码//此处仅为测试,实际应用时应从数据表中查询获得=//美元db_pass & # 39; 2 y 10美元vjjc.rb 2美元/swAUnTfc9B94.l ix75kiZHvOZFpu0Dd8uzp07YWlj4q& # 39;; db_pass 美元;=,password_hash(密码,美元,PASSWORD_BCRYPT); if (password_verify (password 美元,美元db_pass)) { echo 才能“密码匹配“; 其他}{ echo 才能“密码错误“; }如何使用PHP生成随机码