创建用户ID(最佳路线)

时间:2013-03-09 04:55:01

标签: php mysql

我正在寻找写出php / mysql查询来创建唯一用户ID的最佳方法,而不是在mysql中使用自动增量方法。

例如:在您指定用户名之前,Facebook会在用户ID时为用户提供一长串数字作为用户ID。这一串数字可用于查看您的个人资料,或者您可以使用用户名。我希望用户以后能够更改用户名,因此不要根据用户名设计我的系统。

我不知道网站会有多大,所以请考虑解决方案。如果有很多用户注册,我不想要服务器密集的东西。

4 个答案:

答案 0 :(得分:4)

对于这样的事情,实际上没有最佳路线。基本上你需要问自己你的系统需要什么。您可以使用电子邮件地址作为ID,自动递增的数字,MD5哈希,甚至是重熵GUID。

请记住,电子邮件地址可能会发生变化,自动增加的数字可以在自动漏洞利用中使用,并且技术上存在哈希冲突的可能性。

如果你决定使用PHP生成高熵GUID的路线,你可以使用像uniqid这样的函数来实现。

echo uniqid(); // 513ac40699d85
echo uniqid("_", true); // _513ac3e00bfe46.78760239

第二行显示了您可以提供的两个参数;一个前缀和一个更多熵的请求,这将产生更独特的结果。

答案 1 :(得分:1)

你应该遵循这样的算法:

  1. 将新用户输入数据库。
  2. 获取记录ID
  3. 生成userID
  4. 将名称旁边的userID插入sql数据库。
  5. 将新用户输入数据库。

    //get username from previous form
    $user=$_POST['user'];
    // login into mysql server and prepare data for writing
    $connect=mysql_connect('localhost', $user, $pass);
    $selectdb = mysql_select_db('mydb');
    $query = "insert into users_table set
    username='$user';";
    $run_query=mysql_query($query);
    

    获取记录ID

    $id=mysql_insert_id();
    

    生成用户ID

    $first_chars=substr($user, 2);
    $year=date('y');
    $new_user_id= $first_chars.$year.$id;
    

    将名称旁边的UserID插入sql数据库

    $query="update users_table set userid='$new_user_id' where id='$id';";
    $run_query=mysql_query($query);
    if (!$run_query) {
       echo mysql_error();
    }
    else {
       echo 'your user name is '.$user.' and user id is '.$new_user_id ; }
    

答案 2 :(得分:0)

您可以将mysql用作数据库。 Wampserver结合了一切,使其变得简单。但是,我不确定我是否可以帮助你,因为你的问题非常模糊。请添加更多细节。

答案 3 :(得分:0)

使用像sha或md5这样的hexdigest来生成类似sha1($uname+$timestamp+$salt)

的ID

通过执行此操作,您将为每个条目存储大量数据,因为sha1占用40个字节。您已经提到该网站可能会变大,使其成为大量数据。确定它是否值得这么多太空了。

PS:你总是可以对字符串进行切片,但碰撞的可能性更大。