Maison > Applet WeChat > Développement WeChat > le corps du texte

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

小云云
Libérer: 2018-02-02 17:30:43
original
3947 Les gens l'ont consulté

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":[]}';
Copier après la connexion

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);
Copier après la connexion

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']));
Copier après la connexion

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']);
    }
    //快来写你的注册或者修改代码吧!
}
Copier après la connexion

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;
}
Copier après la connexion

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);
            }
        }
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!