【问题标题】:How to create random unique alphanumeric string in PHP [duplicate]如何在 PHP 中创建随机唯一的字母数字字符串 [重复]
【发布时间】:2013-07-21 14:13:36
【问题描述】:

我有以下代码,可让用户使用密码在网站上注册他/她的电子邮件,并返回一个唯一的密码。

<?
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 位数字,只要长且随机),还是我需要生成自己的随机字母数字字符串,然后将其发布到数据库?您建议如何编码?

【问题讨论】:

  • 使用 hash(),md5(),sha1() 等哈希算法函数生成字符串

标签: php php-5.4


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    这是一个很好的功能,可以生成随机发音密码。这可能会帮助您接近您想要完成的目标。

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 2010-10-01
      • 2011-08-18
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      • 2013-08-06
      相关资源
      最近更新 更多