Often encountered forgotten password situation, click on the forgotten password, and then receive the Change Password link, the connection will often have a long and very messy string. Imagine, if there is a duplicate string, it would not be someone else's password reset it?
So creating a unique number is important for Web site security.
At present, PHP can produce a unique number of methods can be used hash value, random number, time and other methods, the following is my own test of the unique number, the personal recommended GUID.
Method One:
<? PHP uniqid (Mt_rand (), 1); Echo ' SHA1: ',SHA1($STR); Echo ' <br> '; Echo ' MD5: ',MD5($STR); ? >
Using the Uniqid function, with the Mt_rand random function, the last hash is worth the final unique value.
But in the test, the uniqueness of the random number is found to have the same part, about 11 bits of the same (but no major obstacle)
Second method: GUID
<? PHP Echo sprintf ('%04x%04x-%04x-%04x-%04x-%04x%04x%04x ', Mt_rand (0, 65535), Mt_rand (0, 65535), Mt_rand (0, 655 , Mt_rand (16384, 20479), Mt_rand (32768, 49151), Mt_rand (0, 65535), Mt_rand (0, 65535), Mt_rand (0, 65535)); echo "<br>"; echo sprintf ('%04x%04x-%04x-%04x-%04x-%04x%04x%04x ', Mt_rand (0, 65535), Mt_rand (0, 65535), Mt_rand (0, 65535), Mt_rand ( 16384, 20479), Mt_rand (32768, 49151), Mt_rand (0, 65535), Mt_rand (0, 65535), Mt_rand (0, 65535)); echo "<br>"; echo sprintf ('%04x%04x-%04x-%04x-%04x-%04x%04x%04x ', Mt_rand (0, 65535), Mt_rand (0, 65535), Mt_rand (0, 65535), Mt_rand ( 16384, 20479), Mt_rand (32768, 49151), Mt_rand (0, 65535), Mt_rand (0, 65535), Mt_rand (0, 65535)); echo "<br>"; echo sprintf ('%04x%04x-%04x-%04x-%04x-%04x%04x%04x ', Mt_rand (0, 65535), Mt_rand (0, 65535), Mt_rand (0, 65535), Mt_rand ( 16384, 20479), Mt_rand (32768, 49151), Mt_rand (0, 65535), Mt_rand (0, 65535), Mt_rand (0, 65535));
For an introduction to UUID, refer to: http://www.cnblogs.com/ghj1976/archive/2011/09/21/2184029.html
PHP algorithm--Generate a unique string