uniqid(“,true”)的主要功能是什么?

时间:2014-03-25 03:00:27

标签: php android mysql database

我正在http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/学习登录系统。

我想问一下,uniqid(”, true)的主要功能是什么? 网站上的教程说

“用户唯一ID - 我使用uniqid(”,true)函数在php中生成唯一用户ID。示例用户ID将类似于4f074eca601fb8.88015924“

为什么必须生成用户ID?为了安全还是为了什么?

非常感谢你们。

这是我的数据库的 mysql 查询。

create table users(
uid int(11) primary key auto_increment,
unique_id varchar(23) not null unique,
name varchar(50) not null,
email varchar(100) not null unique,
encrypted_password varchar(80) not null,
salt varchar(10) not null,
created_at datetime,
updated_at datetime null
); /** Creating Users Table **/

2 个答案:

答案 0 :(得分:1)

也许这个unique_id用于数据提交。例如,提交带有ajax的表单可能需要提交它的人的用户ID,因此为了防止黑客更改发送到服务器的数据,使用唯一ID来使更改几乎无用因为他们不知道模式人们如何分配ID。另一个原因,唯一身份证可能有用,它可能会在网址中用来显示某人的个人资料。示例:profile.php?id = unique_long_id 这可以防止人们知道网站中存在多少用户... 您可以通过无限的方式使用独特的ID进行创作:)

答案 1 :(得分:0)

通常,使用类似“复杂”(不了解auto_increment事件)id的内容,这样任何用户都无法猜出其他用户的id。

如果你使用像uid这样的东西(主键auto_increment列),很容易猜到用户存在第145,146号......。用户可能会试图强行执行一些操纵id的请求。

在一个编码错误的网站中,您在更新值之前没有进行任何安全检查,我们假设您有此URL来更新密码:http://example.com/update_password?uid=150&password=trolling。容易更改任何用户密码吗?但是使用unique_id,它更复杂。

现在为什么uniqid('',true)中的2个参数?因为来自手册:

/* We can also activate the more_entropy parameter, which is 
* required on some systems, like Cygwin. This makes uniqid()
* produce a value like: 4b340550242239.64159797
*/