PHP中快速生成随机密码的几种方式

思路是这样的,密码通常是英文字母和数字的混合编排,我们可以借助随机函数rand函数随机的选择一个长字符串的一部分。

function random_code($length = 8,$chars = null){ if(empty($chars)){ $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; } $count = strlen($chars) - 1; $code = ''; while( strlen($code) < $length){ $code .= substr($chars,rand(0,$count),1); } return $code; } echo random_code;//A1zYbN5X

我们使用rand函数的目的是为了产生随机的字符串,但是如果有一个函数可以做到的话,我们就没有必要使用rand函数了。

function random_char($length = 8,$chars = null){ if( empty($chars) ){ $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; } $chars = str_shuffle($chars); $num = $length < strlen($chars) - 1 ? $length:str_len($chars) - 1; return substr($chars,0,$num); }

可以看到不使用rand函数,而是使用str_shuffle函数,好处是大大减少了代码量。

更近一部的,我们的函数不仅可以生成随机的密码,还可以生成短信验证码,以及高强度的服务器登录密码。

function random_code_type($length = 8,$type = 'alpha-number'){ $code_arr = array( 'alpha' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 'number'=> '0123456789', 'sign' => '#$%@*-_', ); $type_arr = explode('-',$type); foreach($type_arr as $t){ if( ! array_key_exists($t,$code_arr)){ trigger_error("Can not generate type ($t) code"); } } $chars = ''; foreach($type_arr as $t){ $chars .= $code_arr[$t]; } $chars = str_shuffle($chars); $number = $length > strlen($chars) - 1 ? strlen($chars) - 1:$length; return substr($chars,0,$number); } echo random_code_type(8,"alpha-number-sign");#kXM*mC$S

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-10-07 20:47:17

PHP中快速生成随机密码的几种方式的相关文章

在Word文档中快速插入日期的五种方法

  在Word文档中快速插入日期的五种方法          方法1:使用"插入"选项卡中的"日期和时间"功能插入当前系统日期. 在"插入"选项卡的"文本"选项组中单击[日期和时间]按钮,打开"日期和时间"对话框,在"可用格式"列表框中选择用户想要的格式,如图1所示.如果用户希望每次打开Word时都自动更新时间,可同时选中"自动更新"复选框. 图1 打开"时

在Word2007中快速生成指定段落数量的文字

本文我们介绍一个小技巧--在Word2007中快速生成指定段落数量的文字.大家可以用这个方法来快速生成指定段落和句子的文字,进行Word功能测试.学习等. 在Word的编辑界面中输入"=rand(X,Y)"(不包括引号),X和Y是自己指定的数字.比如这里我们写入"=rand(2,3)",然后回车. 电脑教程 现在Word自动给出了一段文字.仔细看,你会发现这些文字分为两段,每段有三个句子. 对,聪明的你一定已经猜到了,这些文字就是"=rand(2,3)&q

Android平台中实现数据存储的5种方式_Android

本文介绍Android中的5种数据存储方式,具体内容如下   数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是:  1 使用SharedPreferences存储数据  2 文件存储数据  3 SQLite数据库存储数据  4 使用ContentProvider存储数据  5 网络存储数据   下面将为大家一一详细介绍.   第一种:使用SharedPreferences存储数据  SharedPreferences是Android平台上一个轻量级

根据json字符串生成Html的一种方式_javascript技巧

文章说明:本文介绍了根据Json串生成Html的一种方式(只是简单实现了文本框,密码框,下拉框).只是觉得好玩才这样做,如果觉得没有任何价值,请忽略.不足指出希望各位大牛指点.后续将根据各位的指点继续完善. 功能说明: 在左侧输入框中输入Json串,点击执行时根据输入的Json串在右侧展示区显示出相应的Html(使用Jquery1.4.4) HTML: 复制代码 代码如下: <table style="width:100%; "> <col width="2

使用NVelocity生成内容的几种方式

使用NVelocity也有几个年头了,主要是在我的代码生成工具Database2Sharp上使用来生成相关代码的,不过NVelocity是一个非常不错的模板引擎,可以用来生成文件.页面等相关处理,非常高效和方便. 它原先是在网站http://nvelocity.sourceforge.net/ 上维护,不过从0.41后,该网站就不再进行NVelocity更新了,现在可以在网站http://nvelocity.codeplex.com/上获得最新版本的更新,接着版本的更新操作,我们把NVeloci

android中Webview实现截屏三种方式小结

本人最近学习了android中Webview实现截屏三种方式,下面我来记录一下,有需要了解的朋友可参考.希望此文章对各位有所帮助. 第一种方式 通过调用webview.capturePicture(),得到一个picture对象,根据图像的宽和高创建一个Bitmap,再创建一个canvas,绑定bitmap,最后用picture去绘制. //获取Picture对象 Picture picture = wv_capture.capturePicture(); //得到图片的宽和高(没有reflec

用excel高级筛选中选择不重复记录两种方式的差异图解

  excel中高级筛选中选择不重复记录两种方式的差异 高级筛选分为两种方式 在原有区域显示筛选结果 将筛选结果复制到其他位置 在原有区域显示筛选结果被筛选掉的行只是被隐藏了 第二种方式 将筛选结果复制到其他位置 被筛选掉的行已经是被删除的 选中数据区域 观察这个数据区域中有两个行是有重复的 并且分别出现过两次 而且是挨着的 鼠标点按a1单元格 拖动鼠标到e25单元格 松开鼠标 点击菜单栏 数据 筛选 高级筛选命令 在弹出的高级筛选对话框的方式 选择为将筛选结果复制到其他位置 点击复制位置后面的

从流程的自动化中获得最大价值的10种方式

本文讲的是 :从流程的自动化中获得最大价值的10种方式,流程自动化很好,如果它可以节省时间并减少错误.但是如果它不能在业务流程中"很好地契合",那么会难以得到普及.问问有谁没有对语音助手感到伤脑筋. 所幸的是,某些最佳实践让你可以从流程自动化中获得最大价值,以下就是其中的10项. 1.保持简单 一个流程自动化项目越复杂,那么就会出现越来越多的故障点,就越难以修复.当数据切换简单易行,你不要做太多干预的时候,自动化的效果是最好的. 2.如果是语音自动化,必须是单音节! 转向采用基于语音技

ajax中data传参的两种方式分析

本文实例讲述了ajax中data传参的两种方式.分享给大家供大家参考,具体如下: 1. POST方式: /** * 订单取消 * @return {Boolean} 处理是否成功 */ function orderCancel(orderId, commant){ var flag = false; $.ajax({ type: "POST", url: "../order/orderCancel.action", //orderModifyStatus data: