a1exlism
9/29/2016 - 4:19 PM

一般的token生成办法

一般的token生成办法

http://www.phperz.com/article/14/1208/33109.html
http://www.lai18.com/content/7368767.html?from=cancel

<?php
# function 1
$token = md5(uniqid(rand()));
echo $token;

# function 2
function genToken( $len = 32, $md5 = true )
{
	# Seed random number generator  
	# Only needed for PHP versions prior to 4.2  
	mt_srand((double)microtime() * 1000000);
	# Array of characters, adjust as desired  
	$chars = array(
		'Q', '@', '8', 'y', '%', '^', '5', 'Z', '(', 'G', '_', 'O', '`',
		'S', '-', 'N', '<', 'D', '{', '}', '[', ']', 'h', ';', 'W', '.',
		'/', '|', ':', '1', 'E', 'L', '4', '&', '6', '7', '#', '9', 'a',
		'A', 'b', 'B', '~', 'C', 'd', '>', 'e', '2', 'f', 'P', 'g', ')',
		'?', 'H', 'i', 'X', 'U', 'J', 'k', 'r', 'l', '3', 't', 'M', 'n',
		'=', 'o', '+', 'p', 'F', 'q', '!', 'K', 'R', 's', 'c', 'm', 'T',
		'v', 'j', 'u', 'V', 'w', ',', 'x', 'I', '$', 'Y', 'z', '*'
	);
	# Array indice friendly number of chars;  
	$numChars = count($chars) - 1;
	$token = '';
	# Create random token at the specified length  
	for ($i = 0; $i < $len; $i++)
		$token .= $chars[mt_rand(0, $numChars)];
	# Should token be run through md5?  
	if ($md5) {
		# Number of 32 char chunks  
		$chunks = ceil(strlen($token) / 32);
		$md5token = '';
		# Run each chunk through md5  
		for ($i = 1; $i <= $chunks; $i++)
			$md5token .= md5(substr($token, $i * 32 - 32, 32));
		# Trim the token  
		$token = substr($md5token, 0, $len);
	}
	return $token;
}   
?>