繁体   English   中英

如何为使用PHP注册我的网站的每个用户生成唯一链接以共享

[英]How to generate a unique link to share for every user that signs up for my website using PHP

我需要帮助来创建类似于发射岩的东西。 有人注册我的网站后,他们将获得一个唯一的链接/网址,以与朋友分享。 URL的唯一性很重要,这样我才能看到一个成员招募了多少人。 请帮忙! 我正在使用php和mysql,但不知道是否需要其他东西。 我需要代码方面的帮助。 谢谢。

不知道在编码方面需要多少帮助,但是您可以使用uniqid生成通用ID: PHP:uniqid-手册

然后只需将该ID附加到您的URL上,如下所示: http : //www.example.com/page.php? id = $ uniqueid

使用openssl_random_pseudo_bytes并遍历bin2hex以获取真实的随机字符串,并检查该字符串是否尚未使用(确实不太可能)。 例如

$bytes = openssl_random_pseudo_bytes(20); //may be nonprintable characters
$string = bin2hex($bytes);

http://de2.php.net/manual/zh/function.openssl-random-pseudo-bytes.php

我的意见是使用来自会员ID的MD5。

创建用户帐户后,生成一个随机字符串(假设长10个字符),并通过在MySQL表中创建新列将其与该帐户相关联。

您可以使用uniqid()来创建唯一的ID。

但是要考虑冲突,您可能必须运行一个循环。 如果您不得不两次运行循环,那将是一个奇迹:

function generateRandomString($length = 10) {
    $characters = ’0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’;
    $randomString = '';

    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[mt_rand(0, strlen($characters))];
    }

    return $randomString;
}

do {
  $id = generateRandomString(10);
} while (mysql_num_rows(mysql_query('SELECT * FROM TABLE WHERE uniq_id = '$id')) != 0);

// $id is now guaranteed to be unique.

获取唯一URL的最佳方法是使用诸如SHA1MD5之类的加密哈希算法来根据用户ID计算唯一哈希。 您应该将此哈希存储在users表中,以便可以轻松搜索它。

然后,您可以共享一个URL,并使用作为GET值应用的哈希值( yourpage.com/page.php?redirect=hashvalue ),无论何时访问这种URL,都可以再次从数据库中获取正确的用户。

任何无法使用会员ID的原因,例如SO会员页面或GUID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM