Cet article vous explique principalement comment enregistrer l'avatar de l'utilisateur sur le serveur après l'autorisation WeChat. J'ai récemment travaillé sur un projet sur la connexion autorisée par WeChat. Je ne dirai pas grand-chose sur l'autorisation. J'ai obtenu les informations de base de l'utilisateur dans le fichier. format suivant :
$user_info = '{"openid":"xx","nickname":"nice花椒.","sex":2,"language":"zh_CN","city":"杭州","province":"浙江","country":"中国","headimgurl":"http:\/\/wx.qlogo.cn\/mmopen\/vi_32\/Q0j4TwGTfTJPpziaqOoIpGia9ZVj9fheAwLmTiavV4rxR40NQ1zPQPyiaMY58FEISDIfpn0q5VeeXliaKyiaiabgK2ZHg\/0","privilege":[]}';
Enregistrez headimgurl directement dans la base de données, le bug arrive.
Sans plus attendre, entrons dans le vif du sujet :
WeChat renvoie le format json
$user_arr = json_decode($user_info, true);
Récupérez l'openid de l'utilisateur et comparez-le avec la base de données pour déterminer s'il est la première autorisation
$mem_info= $member->getuserinfo(array('openid'=>$user_arr['openid']));
Autorisation pour la première fois ou l'adresse du lien de l'avatar est différente de la dernière fois
if(!$mem_info || $mem_info['wximage']!=$user_info['headimg']){ $headimgurl = saveheadimgurl($user_arr['headimgurl']); $headimg ? 0 : $headimg='lib/avata.jpg' ; if($mem_info['wximage']!=$user_info['headimg']){ unlink($mem_info['headimg']); } //快来写你的注册或者修改代码吧! }
Enregistrer la photo
function saveheadimgurl($headimg){ $header = array( 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0', 'Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Accept-Encoding: gzip, deflate', ); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $headimg); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_HTTPHEADER,$header); $dataimg = curl_exec($curl); $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); if ($code == 200) { $imgBase64Code = "data:image/jpeg;base64," . base64_encode($dataimg); } $img_content=$imgBase64Code; if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $img_content, $result)){ $type = $result[2]; create(DOFILESPATH."head"); $new_file = DOFILESPATH."head/".md5(uniqid(rand())).".{$type}"; if (file_put_contents($new_file, base64_decode(str_replace($result[1],'', $img_content)))) { return $new_file; } } return false; }
Créer le fichier à l'emplacement spécifié
function create($dir){ if(is_dir($dir)){ $temp = explode('/',$dir); $cur_dir = ''; for($i=0; $i<count($temp); $i++){ $cur_dir .= $temp[$i].'/'; if(!is_dir($cur_dir)){ @mkdir($cur_dir,777); } } } }
J'espère que vous pourrez utile à tout le monde.
Recommandations associées :
Explication détaillée de l'autorisation WeChat pour le développement de WeChat
Implémentation IOS de l'exemple de code de la fonction de connexion autorisée WeChat
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!