新浪,腾讯,淘宝登陆
可以直接拿去用了
<?<span php </span><span session_start</span><span (); </span><span class</span><span openlogin{ </span><span public</span> <span $_URL</span> = ""<span ; </span><span public</span> <span $config</span> = <span array</span><span (); </span><span public</span> <span function</span><span __construct(){ </span><span $this</span>-><span openlogin(); } </span><span function</span><span openlogin(){ } </span><span /*</span><span 获取登陆页面URL</span><span */</span> <span public</span> <span function</span><span login_url(){ </span><span if</span>(<span empty</span>(<span $this</span>-><span config)){ </span><span return</span> <span false</span><span ; } </span><span $config</span> = <span $this</span>-><span config; </span><span $login_url</span> = <span $config</span>['login_url'<span ]; </span><span $_SESSION</span>['state'] = <span $state</span> = <span md5</span>(<span uniqid</span>(<span rand</span>(), <span TRUE</span><span )); </span><span $array</span> = <span array</span><span ( </span>"response_type"=>"code", "state" => <span $state</span>, "client_id"=><span $config</span>['appkey'], "redirect_uri"=><span urlencode</span>( <span $config</span>['redirect_uri'<span ] ) ); </span><span $this</span>->set(<span $array</span><span ); </span><span $url</span> = <span $this</span>->combineURL(<span $login_url</span> , <span $this</span>-><span _param); </span><span if</span>(<span $url</span><span ){ @</span><span header</span>("Location:".<span $url</span><span ); }</span><span else</span><span { </span><span return</span> <span false</span><span ; } } </span><span /*</span><span 获取access_token</span><span */</span> <span public</span> <span function</span><span get_access_token(){ </span><span if</span>(<span empty</span>(<span $this</span>-><span config)){ </span><span return</span> <span false</span><span ; } </span><span $config</span> = <span $this</span>-><span config; </span><span if</span>(! <span $config</span>['code'] = <span $_REQUEST</span>['code'<span ] ){ </span><span return</span> <span false</span><span ; } </span><span $url</span> = <span $config</span>['authorization_url'<span ]; </span><span $state</span> = <span $_SESSION</span>['state'<span ]; </span><span $array</span> = <span array</span><span ( </span>"grant_type"=>"authorization_code", "client_id" => <span $config</span>['appkey'], "client_secret"=><span $config</span>['appsecret'], "code"=><span $config</span>['code'], "redirect_uri"=><span urlencode</span>( <span $config</span>['redirect_uri'] ), "state"=><span $state</span><span ); </span><span $this</span>->set(<span $array</span><span ); </span><span return</span> <span $this</span>->post_contents(<span $url</span><span ); } </span><span /*</span><span set $this->_param 数组</span><span */</span> <span public</span> <span function</span> set(<span $array</span><span ) { </span><span if</span>(<span empty</span>(<span $array</span><span )){ </span><span return</span> <span false</span><span ; } </span><span $this</span>->_param = <span array</span><span (); </span><span foreach</span>(<span $array</span> <span as</span> <span $name</span>=><span $value</span><span ){ </span><span $this</span>->_param[<span $name</span>] = <span $value</span><span ; } } </span><span /*</span><span * * post_contents * 服务器通过post请求获得内容 * @param string $url 请求的url,拼接后的 * @return string 请求返回的内容 </span><span */</span> <span public</span> <span function</span> post_contents(<span $url</span><span ){ </span><span if</span>(<span empty</span>(<span $url</span><span )){ </span><span return</span> <span false</span><span ; } </span><span $param</span> = <span $this</span>->combineURL("" , <span $this</span>-><span _param); </span><span $ch</span> =<span curl_init(); </span><span //</span><span 设置URL和相应的选项</span> curl_setopt(<span $ch</span>, CURLOPT_URL, <span $url</span><span ); curl_setopt(</span><span $ch</span>, CURLOPT_FAILONERROR, <span false</span><span ); curl_setopt(</span><span $ch</span>, CURLOPT_RETURNTRANSFER, <span true</span><span ); curl_setopt (</span><span $ch</span>, CURLOPT_SSL_VERIFYPEER, 0<span ); curl_setopt (</span><span $ch</span>, CURLOPT_SSL_VERIFYHOST, 0<span ); curl_setopt(</span><span $ch</span>, CURLOPT_POST, 1<span ); curl_setopt(</span><span $ch</span>, CURLOPT_POSTFIELDS, <span $param</span><span ); </span><span //</span><span 抓取URL并把它传递给浏览器</span> <span $reponse</span> = curl_exec(<span $ch</span><span ); curl_close(</span><span $ch</span><span ); </span><span return</span> <span $reponse</span><span ; } </span><span /*</span><span * * get_contents * 服务器通过get请求获得内容 * @param string $url 请求的url,拼接后的 * @return string 请求返回的内容 </span><span */</span> <span public</span> <span function</span> get_contents(<span $url</span><span ){ </span><span $ch</span> =<span curl_init(); curl_setopt(</span><span $ch</span>, CURLOPT_SSL_VERIFYPEER, <span FALSE</span><span ); curl_setopt(</span><span $ch</span>, CURLOPT_RETURNTRANSFER, <span TRUE</span><span ); curl_setopt(</span><span $ch</span>, CURLOPT_URL, <span $url</span><span ); </span><span $response</span> = curl_exec(<span $ch</span><span ); curl_close(</span><span $ch</span><span ); </span><span //</span><span -------请求为空</span> <span if</span>(<span empty</span>(<span $response</span><span )){ </span><span return</span> <span false</span><span ; } </span><span return</span> <span $response</span><span ; } </span><span /*</span><span * * combineURL * 拼接url * @param string $baseURL 基于的url * @param array $keysArr 参数列表数组 * @return string 返回拼接的url </span><span */</span> <span public</span> <span function</span> combineURL(<span $baseURL</span>,<span $keysArr</span><span ){ </span><span if</span>( <span $baseURL</span>==""<span ){ </span><span $combined</span> = ""<span ; }</span><span else</span><span { </span><span $combined</span> = <span $baseURL</span>."?"<span ; } </span><span $valueArr</span> = <span array</span><span (); </span><span foreach</span>(<span $keysArr</span> <span as</span> <span $key</span> => <span $val</span><span ){ </span><span $valueArr</span>[] = "<span $key</span>=<span $val</span>"<span ; } </span><span $keyStr</span> = <span implode</span>("&",<span $valueArr</span><span ); </span><span $combined</span> .= (<span $keyStr</span><span ); </span><span return</span> <span $combined</span><span ; } } </span><span class</span> qq_openlogin <span extends</span><span openlogin{ </span><span private</span> <span $openname</span> = "qq"<span ; </span><span public</span> <span $config</span> = <span array</span><span ( </span>"appkey"=>"your appkey", "appsecret"=>"your appsecret", "redirect_uri"=>"XXXXX", "login_url" => "https://graph.qq.com/oauth2.0/authorize", "scope"=>"get_user_info,add_share,list_album,add_album,upload_pic,add_topic,add_one_blog,add_weibo,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idolist,add_idol,del_idol,get_tenpay_addr", "authorization_url"=>"https://graph.qq.com/oauth2.0/token"<span ); </span><span function</span><span __construct() { </span><span $this</span>-><span qq_openlogin(); } </span><span function</span><span qq_openlogin(){ parent</span>::<span __construct(); } </span><span function</span><span get_access_token(){ </span><span $response</span> = parent::<span get_access_token(); </span><span /*</span><span 检测错误是否发生</span><span */</span> <span if</span>(<span strpos</span>(<span $response</span>, "callback") !== <span false</span><span ){ </span><span $lpos</span> = <span strpos</span>(<span $response</span>, "("<span ); </span><span $rpos</span> = <span strrpos</span>(<span $response</span>, ")"<span ); </span><span $response</span> = <span substr</span>(<span $response</span>, <span $lpos</span> + 1, <span $rpos</span> - <span $lpos</span> -1<span ); </span><span $msg</span> = json_decode(<span $response</span><span ); </span><span if</span>(<span isset</span>(<span $msg</span>-><span error)){ </span><span return</span> <span false</span><span ; } } </span><span $params</span> = <span array</span><span (); </span><span parse_str</span>(<span $response</span>, <span $params</span><span ); </span><span /*</span><span access_token == $params[access_token]</span><span */</span> <span /*</span><span 获取 openid </span><span */</span> <span $response</span> = <span $this</span>->get_contents("https://graph.qq.com/oauth2.0/me?access_token=".<span $params</span>['access_token'<span ]); </span><span //</span><span --------检测错误是否发生</span> <span if</span>(<span strpos</span>(<span $response</span>, "callback") !== <span false</span><span ){ </span><span $lpos</span> = <span strpos</span>(<span $response</span>, "("<span ); </span><span $rpos</span> = <span strrpos</span>(<span $response</span>, ")"<span ); </span><span $response</span> = <span substr</span>(<span $response</span>, <span $lpos</span> + 1, <span $rpos</span> - <span $lpos</span> -1<span ); } </span><span $user</span> = json_decode(<span $response</span><span ); </span><span if</span>(<span isset</span>(<span $user</span>-><span error)){ </span><span return</span> <span false</span><span ; } </span><span /*</span><span 获取用户信息需要参数:openid(用户的ID,与QQ号码一一对应),access_token(可通过使用Authorization_Code获取Access_Token 或来获取access_token有3个月有效期),oauth_consumer_key(用户appid),format(返回格式) </span><span */</span> <span /*</span><span 数据库保存</span><span */</span> <span $open_param</span> = <span array</span><span ( </span>"openid"=><span $user</span>->openid, "access_token"=><span $params</span>['access_token'<span ] ); </span><span // </span> <span $open_param</span>['oauth_consumer_key'] = <span $this</span>->config['appkey'<span ]; </span><span $open_param</span>['format'] = "json"<span ; </span><span /*</span><span 拼接url</span><span */</span> <span $get_user_url</span> = <span $this</span>->combineURL("https://graph.qq.com/user/get_user_info",<span $open_param</span><span ); </span><span //</span><span 猎取用户信息</span> <span $userinfo</span> = <span $this</span>->get_contents(<span $get_user_url</span><span ); </span><span $userinfo</span> = json_decode(<span $userinfo</span><span ); </span><span return</span> <span $userinfo</span><span ; } } </span><span class</span> weibo_openlogin <span extends</span><span openlogin{ </span><span private</span> <span $openname</span> = "weibo"<span ; </span><span public</span> <span $config</span> = <span array</span><span ( </span>"appkey"=>"your appkey", "appsecret"=>"your appsecret", "login_url" => "https://api.weibo.com/oauth2/authorize", "redirect_uri"=>"XXXXXXX", "authorization_url"=>"https://api.weibo.com/oauth2/access_token"<span ); </span><span function</span><span __construct() { </span><span $this</span>-><span qq_openlogin(); } </span><span function</span><span qq_openlogin(){ parent</span>::<span __construct(); } </span><span function</span><span get_access_token(){ </span><span $response</span> = parent::<span get_access_token(); </span><span $userinfo</span> = json_decode(<span $response</span><span ); </span><span return</span> <span $userinfo</span><span ; } } </span><span class</span> taobao_openlogin <span extends</span><span openlogin{ </span><span private</span> <span $openname</span> = "taobao"<span ; </span><span public</span> <span $config</span> = <span array</span><span ( </span>"appkey"=>"your appkey", "appsecret"=>"your appsecret", "redirect_uri"=>"XXXXX", "authorization_url"=>"https://oauth.taobao.com/token", "login_url"=>"https://oauth.taobao.com/authorize"<span ); </span><span function</span><span __construct() { </span><span $this</span>-><span qq_openlogin(); } </span><span function</span><span qq_openlogin(){ parent</span>::<span __construct(); } </span><span function</span><span get_access_token(){ </span><span $response</span> = parent::<span get_access_token(); </span><span $userinfo</span> = json_decode(<span $response</span><span ); </span><span return</span> <span $userinfo</span><span ; } } </span><span if</span>(<span $_GET</span>['openname'<span ]){ </span><span $openname</span> = <span $_GET</span>['openname']."_openlogin"<span ; </span><span $openlogin</span> = <span new</span> <span $openname</span><span (); </span><span if</span>(!<span isset</span>(<span $_REQUEST</span>['code'<span ])){ </span><span //</span><span 请求url</span> <span $url</span> = <span $openlogin</span>-><span login_url(); </span><span if</span>(!<span $url</span><span ){ </span><span echo</span> "0"<span ; </span><span exit</span><span (); } }</span><span else</span><span { </span><span if</span>(<span isset</span>(<span $_REQUEST</span>["state"]) && (<span $_SESSION</span>['state'] != <span $_REQUEST</span>["state"<span ] )){ </span><span echo</span> "1"<span ; </span><span exit</span><span (); } </span><span $rs</span> = <span $openlogin</span>-><span get_access_token(); </span><span print_r</span>( <span $rs</span><span ); } } </span>?>
添加一个人人登陆
<span class</span> renren_openlogin <span extends</span><span openlogin{ </span><span private</span> <span $openname</span> = "renren"<span ; </span><span public</span> <span $config</span> = <span array</span><span ( </span>"appid"=>"your appid", "appkey"=>"your appkey", "appsecret"=>"your secret key", "redirect_uri"=>"XXXXXX", "authorization_url"=>"https://graph.renren.com/oauth/token", "login_url"=>"https://graph.renren.com/oauth/authorize"<span ); </span><span function</span><span __construct() { </span><span $this</span>-><span qq_openlogin(); } </span><span function</span><span qq_openlogin(){ parent</span>::<span __construct(); } </span><span function</span><span get_access_token(){ </span><span $response</span> = parent::<span get_access_token(); </span><span $userinfo</span> = json_decode(<span $response</span><span ); </span><span return</span> <span $userinfo</span><span ; </span><span /*</span><span access_token:获取的Access Token; expires_in:Access Token的有效期,以秒为单位; refresh_token:用于刷新Access Token 的 Refresh Token,长期有效,不会过期; scope:Access Token最终的访问范围,既用户实际授予的权限列表(用户在授权页面时,有可能会取消掉某些请求的权限)。关于权限的具体信息请参考 </span><span */</span><span } </span><span /*</span><span 获取登陆页面URL</span><span */</span> <span public</span> <span function</span><span login_url(){ </span><span if</span>(<span empty</span>(<span $this</span>-><span config)){ </span><span return</span> <span false</span><span ; } </span><span $config</span> = <span $this</span>-><span config; </span><span $login_url</span> = <span $config</span>['login_url'<span ]; </span><span $array</span> = <span array</span><span ( </span>"response_type"=>"code", "client_id"=><span $config</span>['appid'], "redirect_uri"=><span urlencode</span>( <span $config</span>['redirect_uri'<span ] ) ); </span><span $this</span>->set(<span $array</span><span ); </span><span $url</span> = <span $this</span>->combineURL(<span $login_url</span> , <span $this</span>-><span _param); </span><span if</span>(<span $url</span><span ){ @</span><span header</span>("Location:".<span $url</span><span ); }</span><span else</span><span { </span><span return</span> <span false</span><span ; } } }</span>

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le 30 mai, Tencent a annoncé une mise à niveau complète de son modèle Hunyuan. L'application « Tencent Yuanbao » basée sur le modèle Hunyuan a été officiellement lancée et peut être téléchargée sur les magasins d'applications Apple et Android. Par rapport à la version de l'applet Hunyuan lors de la phase de test précédente, Tencent Yuanbao fournit des fonctionnalités de base telles que la recherche IA, le résumé IA et l'écriture IA pour les scénarios d'efficacité du travail ; pour les scénarios de la vie quotidienne, le gameplay de Yuanbao est également plus riche et fournit de multiples fonctionnalités d'application IA. , et de nouvelles méthodes de jeu telles que la création d'agents personnels sont ajoutées. « Tencent ne s'efforcera pas d'être le premier à créer un grand modèle. » Liu Yuhong, vice-président de Tencent Cloud et responsable du grand modèle Tencent Hunyuan, a déclaré : « Au cours de l'année écoulée, nous avons continué à promouvoir les capacités de Tencent. Grand modèle Tencent Hunyuan. Dans la technologie polonaise riche et massive dans des scénarios commerciaux tout en obtenant un aperçu des besoins réels des utilisateurs.

L'événement de commande gratuite Taobao 2024 aura lieu trois fois par jour. Vous devez passer une commande et payer la quantité correspondante de marchandises à l'heure correspondante. Le montant de la commande gratuite sera distribué sous forme d'enveloppes rouges de montants égaux. Ensuite, je vais vous expliquer comment recevoir l'enveloppe rouge de commande gratuite Taobao en 2024 : récupérez-la. Pour les utilisateurs gratuits, la qualification d'enveloppe rouge sera délivrée au package carte et coupon, qui est en état d'activation ; la version Web de Taobao ne dispose actuellement pas du package de cartes et de coupons et affiche uniquement les enregistrements gagnants de l'événement de commande gratuite ; le package de cartes et de coupons se trouve dans [Taobao APP-Mon Taobao] -Mes droits-Enveloppe rouge]. Comment obtenir des enveloppes rouges pour des commandes gratuites sur Taobao 20241. Pour les utilisateurs qui obtiennent des commandes gratuites, les qualifications de l'enveloppe rouge seront distribuées aux packages de cartes et de coupons, qui sont en attente d'activation 2. La version Web de Taobao ; n'a actuellement pas de packages de cartes et de coupons et affiche uniquement les enregistrements gagnants des activités de commande gratuites ;3. Le package de coupons de cartes se trouve dans [Taobao APP-My Taobao-Mes droits-Enveloppe rouge]

Taobao est un logiciel d'achat en ligne couramment utilisé par de nombreux amis. Vous passez généralement des commandes et achetez beaucoup de choses sur Taobao. Il offre aux utilisateurs une fonction de rappel d'enveloppe rouge. Certains amis souhaitent le désactiver, alors dépêchez-vous et consultez le PHP chinois. site Internet. Liste des étapes pour désactiver les rappels d'enveloppes rouges sur Taobao 1. Ouvrez le centre personnel de l'application Taobao et sélectionnez le bouton [Paramètres] pour accéder à la page. 2. Recherchez l'option [Notification de message] Ici, vous pouvez sélectionner le bouton-poussoir de message, rechercher le message de l'enveloppe rouge et éteindre le commutateur. 3. Ou vous pouvez désactiver l'autorisation de notification de l'application Taobao via la page des paramètres de votre téléphone mobile, afin que tous les messages de Taobao n'entrent pas dans le push et ne puissent être vus qu'après l'avoir allumé. 4. Les utilisateurs peuvent définir les types de messages qu'ils souhaitent recevoir, ce qui facilite leur utilisation.

Comment utiliser l'enveloppe rouge gratuite Taobao 510 ? Taobao a récemment lancé un événement de commande gratuite pour célébrer son 510e anniversaire. Cet événement vous permet d'obtenir des enveloppes rouges de commande gratuites, et il présente de nombreux avantages. Je pense que de nombreux amis souhaitent participer à cet événement. Certains amis ont déjà reçu des enveloppes rouges de commande gratuites. , mais ce n'est pas le cas. Si vous connaissez l'utilisation spécifique, jetons un coup d'œil à l'introduction pertinente aujourd'hui. Instructions d'utilisation du paquet rouge de commande gratuite du 510e anniversaire de Taobao : Le paquet rouge de commande gratuite peut être utilisé une fois que toutes les commandes passées pour deviner des questions ont été confirmées et reçues. 1. Les utilisateurs peuvent émettre et récupérer des enveloppes rouges gratuites via la version Web de Taobao. Actuellement, il n'existe pas de package de cartes et de coupons, mais il peut être consulté sur [Application Taobao-Mon Taobao-Mes droits-Enveloppes rouges]. Pour les utilisateurs qui obtiennent la commande gratuite, la qualification de l'enveloppe rouge sera distribuée au package de cartes et de coupons, qui est en état d'activation, le package de cartes et de coupons est en cours pour gagner des prix ;

1. Ouvrez l'application Taobao, cliquez sur [Mon Taobao] dans le coin inférieur droit, puis cliquez sur [Paramètres] dans le coin supérieur droit. 2. Sélectionnez [Règlement du marchand], cliquez sur [Ouvrir la boutique Taobao] et sélectionnez [Marchand général]. 3. Dans l'interface [Ouverture de boutique gratuite], les utilisateurs peuvent voir le processus spécifique d'ouverture d'une boutique [Marchand personnel]. 4. Nommez votre magasin, puis cliquez sur [Ouvrir un magasin], cochez les trois éléments et cliquez sur [Ouvrir un magasin pour 0 yuan]. 5. Enfin, complétez [Authentification de personne réelle] et complétez [Informations de base sur le magasin] pour ouvrir avec succès un magasin.

Lorsque nous faisons des achats sur Taobao, nous utilisons souvent des enveloppes rouges gratuites pour bénéficier de réductions. Mais si nous avons besoin d’un remboursement, ces enveloppes rouges gratuites seront-elles retournées ? Jetons un coup d'œil à la réponse à cette question. Les enveloppes rouges gratuites de Taobao seront-elles remboursées ? Selon la situation, lorsque vous recevez une enveloppe rouge, l'enveloppe rouge est en attente d'activation. Avant d'échanger le produit, l'enveloppe rouge à activer n'est pas activée et ne peut pas être utilisée. temporairement. Vous attendrez que la réception du produit acheté soit confirmée, l'enveloppe rouge qui doit être activée peut être utilisée. S'il y a un problème avec le produit après avoir utilisé l'enveloppe rouge gratuite et qu'il doit être retourné, alors le retour de l'enveloppe rouge doit être jugé en fonction de la situation réelle : 1. Règles de remboursement 11. Si un remboursement intervient après le Une enveloppe rouge est utilisée, l'enveloppe rouge sera restituée au prorata. 2. Si l'enveloppe rouge n'est pas en retard, la période d'utilisation de l'enveloppe rouge retournée est la période d'utilisation initiale. Si elle est en retard, elle sera émise dans les 7 jours.

Les modèles AniPortrait sont open source et peuvent être utilisés librement. "Un nouvel outil de productivité pour Xiaopozhan Ghost Zone." Récemment, un nouveau projet publié par Tencent Open Source a reçu une telle évaluation sur Twitter. Ce projet est AniPortrait, qui génère des portraits animés de haute qualité basés sur l'audio et une image de référence. Sans plus tarder, jetons un coup d'œil à la démo qui peut être prévenue par une lettre d'avocat : Les images d'anime peuvent aussi parler facilement : Le projet a déjà reçu de nombreux éloges quelques jours seulement après son lancement : le nombre de GitHub Stars a dépassé 2 800. Jetons un coup d'œil aux innovations d'AniPortrait. Titre de l'article : AniPortrait : Audio-DrivenSynthesisof

Question du 31 mars de Taobao Winner : Sous la dynastie Tang, comment les gens pouvaient-ils encore appeler leur père ? et partagez-le, les amis intéressés peuvent venir le découvrir. Taobao Daily Guess Answers Taobao Big Winner du 31 mars : Sous la dynastie Tang, les gens pouvaient-ils encore appeler leur père ? Question : Sous la dynastie Tang, les gens pouvaient-ils encore appeler leur père Réponse : Analyse de la réponse de B. Brother : 1. Cliquez ici pour trouver ? des indices. Vous pouvez trouver la réponse à la question sur la page ci-dessous ; 2. Les gens de la dynastie Tang peuvent appeler leur père frère. Dans le « Vieux livre de Tang·Biographie de Wang Ju », « Xuanzong a dit : Le quatrième frère. est bienveillant et filial" ; 3. Le "quatrième frère" fait ici référence au père de Xuanzong, Ruizong, qui était en même temps
