Maison  >  Article  >  Applet WeChat  >  Méthode de mise en œuvre pour enregistrer l'avatar de l'utilisateur sur le serveur après autorisation WeChat

Méthode de mise en œuvre pour enregistrer l'avatar de l'utilisateur sur le serveur après autorisation WeChat

小云云
小云云original
2018-02-02 17:30:433915parcourir

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 :

Comment utiliser la connexion autorisée WeChat ? Résumer l'utilisation des exemples de connexion autorisée WeChat ,

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn