|
 |
uniqid (PHP 3, PHP 4, PHP 5) uniqid -- Generate a unique ID Descriptionstring uniqid ( [string prefix [, bool more_entropy]] )
uniqid() returns a prefixed unique identifier
based on the current time in microseconds. prefix
is optional but can be useful, for instance, if you generate identifiers
simultaneously on several hosts that might happen to generate the
identifier at the same microsecond. Up until PHP 4.3.1,
prefix could only be a maximum of 114
characters long.
If the optional more_entropy parameter is
TRUE, uniqid() will add additional entropy (using
the combined linear congruential generator) at the end of the return
value, which should make the results more unique.
With an empty prefix, the returned string
will be 13 characters long. If more_entropy is
TRUE, it will be 23 characters.
Замечание:
The prefix parameter became optional in PHP 5.
If you need a unique identifier or token and you intend to give
out that token to the user via the network (i.e. session cookies),
it is recommended that you use something along these lines:
This will create a 32 character identifier (a 128 bit hex number)
that is extremely difficult to predict.
uniqid
admin at code-dynasty dot net
08-Jul-2006 08:46
I'm not too fond of the recommendation to use an MD5 of the unique ID for session IDs. It would be a better idea just to use uniqueid(rand(), true) without the MD5, because even though it's a rare circumstance, MD5 is a hash, not an encryption, which means it has collisions. Therefore you theoretically could have multiple users given the same session ID which could result in one user's ability to access another user's data.
dholmes at cfdsoftware dot net
09-May-2006 08:26
WARNING : I believe there are a couple of mistakes in the function provided just below by maciej dot strzelecki at gmail dot com. Namely, that in the two substr_replace() calls, the third parameters should respectively be 12 (instead of 11) and 6 (instead of 5).
Considering the importance of this function, I went to read RFC 4122 myself, and found the discrepancy. I therefore chose to write my own function, inspired by the previous one, but with a few enhancements detailed in the comments. On the downside, it might be slightly less easy to understand at first glance.
Please feel free to use it yourself. Thank you also in advance for any feedback at dholmes at cfdsoftware.net .
<?php
function uuid() {
return sprintf('%04x%04x-%04x-%03x4-%04x-%04x%04x%04x',
mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 4095), bindec(substr_replace(sprintf('%016b', mt_rand(0, 65535)), '01', 6, 2)),
mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535) );
}
?>
maciej dot strzelecki at gmail dot com
16-Apr-2006 11:09
This is an implementation of version 4 UUID, which is generating UUIDs from truly-random numbers.
<?php
function uuid()
{
return sprintf(
'%08x-%04x-%04x-%02x%02x-%012x',
mt_rand(),
mt_rand(0, 65535),
bindec(substr_replace(
sprintf('%016b', mt_rand(0, 65535)), '0100', 11, 4)
),
bindec(substr_replace(sprintf('%08b', mt_rand(0, 255)), '01', 5, 2)),
mt_rand(0, 255),
mt_rand()
);
}
?>
| |