1.当微信用户授权的头像失效时,返回的是一张图片。 2.微信头像失效时虽然返回的图片的url不一样,但是图片都是同一张,所以他们的散列值(hash)都是一样。 1.找到微信头像失效时返回的图片,并获取其md5值 2.将业务所需头像的md5值与上面获取的md5值进行对比,如果一致,则是失效图片,对其进行更换或者进行其他操作。 1.总所周知, 2.如果微信更换了失效图片,则此方法也会失效,所以尽量使用try catch 将此foreach循环包裹,当微信更换失效头像时,代码下面业务的也能正常运行。 3.需要确保用户头像的url是有效的,否则一、首先我们需要了解两个点:
二、理解了上述两点,就跟着以下的步骤走
$hash = md5(file_get_contents("https://wx.qlogo.cn/mmopen/vi_32/
DYAIOgq83eqeqS6qHGTDwCKvq8H7E6w009CPwVqVnabayODP9l7wbE1xnFW2u28iciceC9kibfiae3EG1kwYxNibdqQ/132"));
//循环遍历用户信息
foreach ($user_info as &$v) {
//判断:如果用户头像的hash值等于失效头像的hash值,则使用默认头像
if (md5(file_get_contents($v['avatar_url'])) == $hash) {
//默认头像
$v['avatar_url'] = 'https://image.llljjjjjj.com/default/cover.png';
}
}
三、注意事项
file_get_contents()
函数极其消耗资源,效率非常低。所以,这种方法,只适合在数量少的场景下使用。file_get_contents()
函数会报错