php如何编码/解码ID用户(int)Alpha数字格式的9位数字
我希望它是字母数字和我可以在哪里解码和编码它。 例子:php如何编码/解码ID用户(int)Alpha数字格式的9位数字
$id = 12452; $encoded = encode_id($id); // return -> R51RT74UJ
$decoded = decode_id($encoded); // return -> 12452
function encode_id($id, $length = 9) {
return $id; // With a maximum of 9 lengths
}
function decode_id($id, $length = 9) {
return $id; // With a maximum of 9 lengths
}
回答:
您可以使用以下功能:
<?php echo base64_encode(123); //MTIz
echo "<br>";
echo base64_decode(base64_encode(123)); //123
?>
回答:
一般它是一个更好的主意,使用PHP的函数uniqid()来生成用户ID。返回值也是url有效的。
回答:
我发挥它周围,有它通过使用代码PHP random string generator和Can a seeded shuffle be reversed?
function generateRandomString($length = 10) { $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
function seeded_shuffle(array &$items, $seed = false) {
$items = array_values($items);
mt_srand($seed ? $seed : time());
for ($i = count($items) - 1; $i > 0; $i--) {
$j = mt_rand(0, $i);
list($items[$i], $items[$j]) = array($items[$j], $items[$i]);
}
}
function seeded_unshuffle(array &$items, $seed) {
$items = array_values($items);
mt_srand($seed);
$indices = [];
for ($i = count($items) - 1; $i > 0; $i--) {
$indices[$i] = mt_rand(0, $i);
}
foreach (array_reverse($indices, true) as $i => $j) {
list($items[$i], $items[$j]) = [$items[$j], $items[$i]];
}
}
使用,你可以做这样的功能,您需要保存$seed
虽然
//$length is the expected lentgth of the encoded id function encode_id($id, $seed, $length = 9) {
$string = $id . generateRandomString($length - strlen($id));
$arr = (str_split($string));
seeded_shuffle($arr, $seed);
return implode("",$arr);
}
//$length is the expected lentgth of the original id
function decode_id($encoded_id, $seed, $length = 6) {
$arr = str_split($encoded_id);
seeded_unshuffle($arr, $seed);
return substr(implode("", $arr),0,$length);
}
$id = "123456";
$seed = time();
$encodedId = encode_id($id,$seed);
echo decode_id($encodedId,$seed); //outputs 123456
以上是 php如何编码/解码ID用户(int)Alpha数字格式的9位数字 的全部内容, 来源链接: utcz.com/qa/257691.html