2013-02-07 24 views
0
<?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]; 
    } 

?> 

我需要发送电子邮件与生成的通行证,但我必须生成通过得到一些变量,但我现在不怎么样。array_rand password

+0

@Dagon能否请你列出那些成千上万? ;) – Kermit

+0

这是一个非常基本的PHP的事情...级别100级...如何访问变量。 – bretterer

+3

http://stackoverflow.com/search?q=php+random+password第一623,其余的书面请求 – 2013-02-07 19:15:35

回答

2

我只是用这个:$newpass = substr(md5(uniqid()),0,8);

这不是特别安全的,但它的工作和用户需要尽快更改其密码,因为他们与重置密码登录。重点是它比循环和字符访问更有效率。

+0

+1。 'base64_encode(md5(uniqid()))'可以给出一个强悍的密码。 –

+0

@AyeshK但是很长。你真的希望你的用户必须输入一个长度为45个字符的密码才能恢复他们的账户吗? –

+0

对不起,我打算把你的substr()那里。 (base64_encode(md5(uniqid())),0,8);' –

0

用户这几天我写的代码片段。

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); 
2

您可以使用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));