生成用于跟踪$wpdb插入的唯一哈希/数字

时间:2015-09-10 作者:Lasse M. Tvedt

我想生成一个唯一的哈希/数字,用于比赛状态跟踪。我将在用创建的url中使用此哈希/数字add_query_args.

url创建将如下所示:

$url = add_query_arg( array( \'id\' => \'tracking_number_comes_here\', \'email\' => \'$contest_object->email\' ), $redirect_url );
将输出如下内容:

www.example.dev/share/?id=tracking_number_comes_here&[email protected]
这很好,但我很难生成一个唯一的哈希/数字来用作跟踪号。

当参与者提交其参与时,将在竞赛表中添加一行。我使用wpdb将以下内容插入到我的表中:

    // Add user to db
    $addRow = $wpdb->insert(
        $wpdb->contest,
            array(
                \'name\' => $data[\'name\'],    
                \'email\' => $data[\'email\'],
                \'shared_facebook\' => 0,
                \'shared_mail\' => 0,
                \'tracking\' => $unique_hash_number
            )
    );
我认为从md5为整数的整数中生成一个8个字符的哈希值,如果整数是参与者ID,则可以使用。

$hash = substr(md5($id), 0, 8);
插入时是否可以获取参与者id?或者,在参与者添加到表中后,我是否必须更新哈希?

1 个回复
最合适的回答,由SO网友:totels 整理而成

用户ID在插入用户之前不存在,您需要对此进行第二次更新。使用PHP可能会更好uniqid(), 可能将用户的电子邮件作为salt/前缀,以避免出现竞争情况(尽管可能性不大)。