技术饭

PHP仿造微信批量生成OpenId、UnionID

copylian    0 评论    1483 浏览    2020.02.25

微信大家都很熟悉,那么微信的OpenId、UnionID的生成规则是什么呢?又如何才能批量地生成OpenId、UnionID呢?

首先我观察了两个公众号关注后的生成openid的规则,发现了以下规则:

1、OpenID都是28位

2、前六位是有规律的

然后接下来就按着自己找的规律生成下就阔以了,之所以代码中会存在$ch的这个变量是因为这个公众号,关注后生成的openid第七位是字母,而且大小写均有,所以就增加了这一项。
大家要是想生成自己的openid,可以依据下面的进行修改!

    /**

     * [open_id 生成openid]

     * @param  string $head   [头]

     * @param  string $length [长度]

     * @param  string $char   [字符串]

     * @return [type]         [返回字符串]

     */

    protected function open_id($head = "", $length = '', $char = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-'){

        if (!is_int($length) || $length < 0) {

            return '$length 必须为Int类型';

        }


        $string = '';

        for ($i = $length; $i > 0; $i--) {

            $string .= $char[mt_rand(0, strlen($char) - 1)];

        }

        return $head.$string;

    }


    /**

     * [getuserlist 生成openid、unionid数据]

     * @return [type] [description]

     */

    public function getuserlist(){

       

       $userinfo = [];

       for ($i = 0; $i < 50000; $i++) {

            $ch = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

            $head_u = 'o4cUZ6' . substr($ch, mt_rand(0, 31), 1);

            $userinfo[$i]['unionid'] = $this->open_id($head_u, 21);


            $head = 'ofEM5j' . substr($ch, mt_rand(0, 31), 1);

            $userinfo[$i]['openid'] = $this->open_id($head, 21);


            //$userinfo[$i]['nickname'] = $this->getnickname();

        }

        dump($userinfo);

    }


飓风呀
感谢你的支持,我会继续努力!
扫码打赏,感谢您的支持!
php 微信 openid unionid 

文明上网理性发言!

  • 还没有评论,沙发等你来抢