如何在PHP中创建随机唯一的字母数字字符串

3
我有以下代码,允许用户使用密码在网站上注册他/她的电子邮件,并返回一个唯一的PIN码。
<?
if($_POST['srSubmit'] && $_POST['srEmail'] && $_POST['srPass']) {
    $conn = mysql_connect('localhost','','');
    mysql_select_db("db_test",$conn);
    while(1) {
        $pin = rand(111111,999999);
        $sel = mysql_query("SELECT * FROM formusers WHERE pin = '$pin'");
        if(mysql_num_rows($sel) != 0) { continue; }

        mysql_query("INSERT INTO formusers(email,password,pin) VALUES('".$_POST['srEmail']."','".$_POST['srPass']."','".$pin."')");
        if(mysql_affected_rows()!=-1)  {
            echo "Pin:" . $pin;
            exit;
        } else {
            echo "Existing email, try again<br />";
        }
        break;
    }

}
?>
<form method="POST" action="">
<input type="email" name="srEmail" value="" placeholder="Email" /><br />
<input type="password" name="srPass" value="" placeholder="Password" /><br />
<input type="submit" name="srSubmit" value="Register" />
</form>

我想为每个用户关联一个唯一的URL(server.com/[unique-9-digit-alphanumeric-code]),这样我就可以创建一个相对安全的管理员页面,用户可以在不必知道密码的情况下访问该页面。
是否有PHP函数可以轻松实现这个功能(它不必是9位数字,只要足够长且随机),或者我需要生成自己的随机字母数字字符串,并将其发布到数据库中?你会如何建议编写此代码?

2
使用哈希算法函数如hash()、md5()、sha1()来生成字符串。 - bugwheels94
2个回答

1
很多时候,当我需要一个唯一的字符串时,我使用这个mysql查询: 选择HIGH_PRIORITY UNIX_TIMESTAMP(); 以获得一个唯一的10位数字,如1374517262,然后添加或前置字符。

1

http://snipplr.com/view/5444/

这是一个很好的函数,可以生成随机的可发音密码。这可能有助于您接近您想要实现的目标。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接