如何生成多个随机代码

时间:2014-07-17 07:21:21

标签: php

我输入了这个以生成随机代码。我正在尝试将它们添加到生成的数据库中。如何修改此代码以生成x个数而不是一个?

<?php
$tokens = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

$serial = '';

for ($i = 0; $i < 4; $i++) {
    for ($j = 0; $j < 5; $j++) {
        $serial .= $tokens[rand(0, 35)];
    }

    if ($i < 3) {
        $serial .= '-';
    }
}

echo '<p>' . $serial;

?>

3 个答案:

答案 0 :(得分:0)

用于更精确的随机令牌。尝试使用文字添加当前时间戳。当前时间戳本身每秒都在变化。因此它将大多是独一无二的。在前面或后面添加随机文本可以使同一时间工作的用户更加独特。

UPDATE :还添加一个函数,无论该唯一字符串是否存在。

答案 1 :(得分:0)

一种非常酷,简单的方法,也可以是这样的。

<?php
echo md5(microtime());

当然,它不是100%安全等,但如果你需要一个快速简单的&#34; RANDOM&#34;字符串它可能是有用的。

关于你的问题:

<?php
function genereteRandomKey($count=10)
{
    $data = [];
    for($i=0;$i<$count;$i++)
    {
        $data[] = md5(microtime());
    } 
    return $data;
}
var_dump(generateRandomKey());

答案 2 :(得分:0)

为此,我们稍微编辑你的代码并将其包装在一个函数中,就像这样;

function createHash($length = 4) 
{
    $tokens = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    $serial = '';

    for ($it = 0; $it < $length; $it++) {
        $serial .= $tokens[ mt_rand( 0, (strlen($tokens) - 1) )];
    }
    return $serial;
}

参数中的长度可以保留为空,默认为4,以防您想要创建更长的代码。

然后创建更多代码,你只需循环通过for循环(或者你正在使用的任何循环!)就像这样;

for ($i = 0; $i < 5; $i++) {
    echo createHash() . '<br />';
}

显然,您不希望将它们反映出来,而是将它们添加到数据库中。

考虑到这一点,我是否也可以建议,而不是多个INSERT查询,将它们全部捕获到数组中,然后在查询上运行一次,这可以像这样实现;

$inserts = array (); 
for ($i = 0; $i < 5; $i++) {
    $inserts[] = createHash();
}

$sql = "INSERT INTO `table` (`row`) VALUES ('" . implode('\'), (\'', $inserts) . ");";

在该测试运行中,将输出以下内容作为$sql;

INSERT INTO `table` (`row`) VALUES ('ISS7'), ('SB72'), ('N97I'), ('1WLQ'), ('TF6I);