<?php
$abc = 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');
for ($i=0; $i < 6; $i++)
{
$pass = array_rand($abc);
echo $abc[$pass];
}
?>
我需要用生成的通行证发送电子邮件,但我必须生成通行证,以获得一些变量,但我现在不知道如何。
我只使用这个:$newpass = substr(md5(uniqid()),0,8);
它不是特别安全,但它可以完成任务,用户在使用重置密码登录后需要立即更改密码。关键是它比循环和字符访问更有效。
您可以使用mcrypt扩展的iv函数从系统中获取随机数据。因为它是一个比特流,所以你需要以某种方式对它进行编码,这样它就不会在屏幕上成为垃圾。Base64编码应该足够了。因为base64编码的字符串大约长33%,所以需要将字符串缩短到所需的长度。
这里有一个简单的例子:
function password($length = 10) {
$random = mcrypt_create_iv($length, MCRYPT_DEV_URANDOM);
$base64 = base64_encode($random);
return substr($base64, 0, $length);
}
var_dump(password(10));
使用我几天前写的这段代码。
function genText($length) {
$out_str = '';
$p_chars = "AGHACEFHJKRSTVXY124579aghacefhjkrstvxy"; // can be any set of characters
while (strlen($out_str) < $length) {
$out_str.= $p_chars{rand() % (strlen($p_chars))};
}
return $out_str;
}
$your_variable = genText(8);