美文网首页
PHP实现:一种隐藏ID的方式

PHP实现:一种隐藏ID的方式

作者: 没心没肺最开心 | 来源:发表于2022-08-21 16:12 被阅读0次

    实际场景中,不想吧ID暴露出去,就这么转换。如有需要可以用md5新增校验位。

    public static function int_2_str($i,$min_length = 4){
            $str = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T',
            'U','V','W','X','Y','Z'];
            $l = count($str);
            $b_arr = [];
            while(True){
                $s = intdiv($i, $l); //商
                $y= $i % $l;  # 余数
                $b_arr[] = $y;
                if($s == 0){
                    break;
                }
                $i=$s;
            }
        
            $b_arr = array_reverse($b_arr);
            $re_str = "";
            foreach($b_arr as $item){
                $re_str =  $re_str.$str[$item];
            }
            $re_str = strtoupper($re_str);
            if(strlen($re_str) < $min_length){
                $need = $min_length - strlen($re_str);
                for($ii =0;$ii<$need;$ii++){
                    $re_str = $re_str.strtolower($str[random_int(0,$l-1)]);
                }
            }
            return $re_str;
        }
        
        public static function str_2_int($str = ''){
            $arr = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T',
            'U','V','W','X','Y','Z'];
            $len = count($arr);
            $l = strlen($str);
            $arr_new = [];
            for($ii = 0;$ii<$l;$ii++){
                if (in_array($str[$ii],$arr)){
                    $arr_new[] = $str[$ii];
                }
            }
            $l_new = count($arr_new);
            $re_int = 0;
            $arr_new = array_reverse($arr_new);
            for($i=0;$i<$l_new;$i++){
                $index = array_search($arr_new[$i],$arr);
                $re_int = $re_int + $index * pow($len,$i);
            }
            return $re_int;
        }
    

    相关文章

      网友评论

          本文标题:PHP实现:一种隐藏ID的方式

          本文链接:https://www.haomeiwen.com/subject/mimigrtx.html