我需要帮助创造一些类似于发射岩石的东西。在有人注册我的网站后,他们会得到一个独特的链接/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