如何生成一个独特的链接,分享每一个用户注册我的网站使用PHP



我需要帮助创造一些类似于发射岩石的东西。在有人注册我的网站后,他们会得到一个独特的链接/url与他们的朋友分享。重要的是,URL是唯一的,这样我就可以看到有多少人被一个成员招募。请帮助!我正在使用php和mysql,但我不知道我是否需要别的东西。我需要你帮我写密码。谢谢。

不知道你需要多少帮助来编码它,但你可以使用uniqid来生成一个通用ID: PHP: uniqid - Manual

然后在URL后面加上id像这样http://www.example.com/page.php?id=$uniqueid

我的意见是使用注册成员ID的MD5。

获得唯一URL的最佳方法是使用加密散列算法,如SHA1或MD5从用户ID计算唯一的哈希值。您应该将该散列存储在users表中,以便可以轻松地进行搜索。

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

任何不能像SO Member Page那样使用会员ID或GUID的原因

创建用户帐户时,生成一个随机字符串(假设有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.

使用openssl_random_pseudo_bytes并运行bin2hex来获得一个真正的随机字符串,并检查它是否已经在使用(确实不太可能)。例如

$bytes = openssl_random_pseudo_bytes(20); //may be nonprintable characters
$string = bin2hex($bytes);
http://de2.php.net/manual/en/function.openssl-random-pseudo-bytes.php

相关内容

最新更新