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

回到顶部