技术饭
PHP仿造微信批量生成OpenId、UnionID
微信大家都很熟悉,那么微信的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);
}
文明上网理性发言!