2014-03-25 29 views
0

我正在學習登錄系統http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/uniqid(「,true)的主要功能是什麼?

我想問一下,uniqid(」, true)的主要功能是什麼?
從網站上的教程說

「用戶唯一的ID - 我使用uniqid在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 **/ 
+0

旁註:捲曲引號會殺死你的代碼。 –

+0

['閱讀手冊'](http://www.php.net/manual/en/function.uniqid.php) –

+0

@ Fred-ii-我認爲OP在詢問唯一ID的用途是什麼這種情況,而不是'uniqid'如何工作。 – sgress454

回答

0

通常情況下,像一個「複雜」(不明白一個auto_increment的事情)的ID被使用,以便使用戶無法猜測的其他用戶的ID。

如果您使用了像uid(主鍵auto_increment列)之類的內容,則很容易猜測用戶145th,146th,...存在。用戶可能試圖蠻橫強制一些請求操縱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 
*/ 
1

也許這unique_id用於數據提交。例如,使用ajax提交表單可能需要提交人員的用戶標識,因此爲了防止黑客更改發送到服務器的數據,使用唯一標識符使變化幾乎無用,因爲他們不知道模式人們如何分配ID。另一個原因,唯一的ID可能是有用的,它可能會被用來顯示網址的個人資料。例如:profile.php?id = unique_long_id 這可以防止人們知道網站中有多少用戶... 有無限的方式,你可以用獨特的ID創意:)