1.随机生成验证码
rand()--返回0到getrandmax()之间的伪随机整数;
<?php
header('content-type:text/html;charset=utf-8');
$str = "abcdefghijklmnopqrstuvwxyz0123456789";
echo getrandmax();
echo '<br>';
echo rand();
以上例子输出结果(随机):
32767
19957
2.在指定范围内生成一个随机数
int rand(int $min,int $max)
例:生成 0-10 之间的随机数
<?php
header('content-type:text/html;charset=utf-8');
$str = "abcdefghijklmnopqrstuvwxyz0123456789";
echo rand(0,10);
3.mt_rand——生成更好的随机数(语法同rand)
<?php
header('content-type:text/html;charset=utf-8');
$str = "abcdefghijklmnopqrstuvwxyz0123456789";
$len = strlen($str);//36
mt_rand(0,$len-1);
索引号为0-35
4.substr——返回字符串的子串
语法:string substr(string $string,int $strat[,int $length])
start
如果start是非负数,返回的字符串将从string的start位置开始,从0开始计算。
如果start是负数,返回的字符串将从string结尾处向前数第start个字符开始。
如果start的长度小于或等于start,将返回FALSE
例:使用负数start
<?php
$rest = substr("abcdef",-1); //返回"f"
$rest = substr("abcdef",-1); //返回"ef"
$rest = substr("abcdef",-3,1); //返回d
length
如果提供了正数的length,返回的字符串将从start处开始最多包括length个字符(取决于string的长度).
如果提供了负数的length,那么string末尾处的许多字符将会被漏掉(若start是负数则从字符串尾部算起),如果start不在这段文本中,那么将返回一个空字符串。
如果提供了值为0,FALSE或NULL的length,那么将返回一个空字符串。
如果没有提供length,返回的子字符串将从start位置开始直到字符串结尾。
例:使用负数length
<?php
$rest = aubstr("abcdef",0,-1); //返回"abcde"
$rest = aubstr("abcdef",2,-1); //返回"cde"
$rest = aubstr("abcdef",4,-4); //返回 ""
$rest = aubstr("abcdef",-3,-1); //返回"de"
5.生成四位随机验证码
思路:首先生成四个指定范围的随机数,从每个数中取一个字符,之后连接起来
<?php
header('content-type:text/html;charset=utf-8');
$str = "abcdefghijklmnopqrstuvwxyz0123456789";
$len = strlen($str);//36
$yzm = '';
for($i=0;$i<4;$i++){
$rand = mt_rand(0,$len-1);
$yzm .= substr($str, $rand,1);
//echo $rand.'<br>';
}
echo $yzm;
6.使用数组生成四位随机验证码
思路:首先创建数组,合并数组,随机从数组中抽取元素,之后连接起来
<?php
header('content-type:text/html;charset=utf-8');
$arr1 = range('a','z');
$arr2 = range('A','Z');
$arr3 = range(0,9);
//合并数组
$arr = array_merge($arr1,$arr2,$arr3);
//随机从数组中抽取4个元素
$keys = array_rand($arr,4);
$yzm = '';
foreach($keys as $k){
$yzm .= $arr[$k];
}
echo $yzm;
随机生成四位验证码(不唯一):
rxA0
1. array_merge — 合并一个或多个数组 语法:array array_merge ( array $array1
[, array $...
] )
array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
2. array_rand — 从数组中随机取出一个或多个单元 语法:mixed array_rand ( array $input
[, int $num_req
= 1 ] )
从数组中取出一个或多个随机的单元,并返回随机条目的一个或多个键。
如果你只取出一个, array_rand() 返回一个随机单元的键名,否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。