新浪,腾讯,淘宝登陆
可以直接拿去用了
<?<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>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Pada 30 Mei, Tencent mengumumkan peningkatan menyeluruh model Hunyuannya Apl "Tencent Yuanbao" berdasarkan model Hunyuan telah dilancarkan secara rasmi dan boleh dimuat turun dari kedai aplikasi Apple dan Android. Berbanding dengan versi applet Hunyuan dalam peringkat ujian sebelumnya, Tencent Yuanbao menyediakan keupayaan teras seperti carian AI, ringkasan AI, dan penulisan AI untuk senario kecekapan kerja untuk senario kehidupan harian, permainan Yuanbao juga lebih kaya dan menyediakan pelbagai ciri , dan kaedah permainan baharu seperti mencipta ejen peribadi ditambah. "Tencent tidak akan berusaha untuk menjadi yang pertama membuat model besar, Liu Yuhong, naib presiden Tencent Cloud dan orang yang bertanggungjawab bagi model besar Tencent Hunyuan, berkata: "Pada tahun lalu, kami terus mempromosikan keupayaan untuk Model besar Tencent Hunyuan Dalam teknologi Poland yang kaya dan besar dalam senario perniagaan sambil mendapatkan cerapan tentang keperluan sebenar pengguna

Acara pesanan percuma Taobao 2024 akan diadakan tiga kali sehari Semua orang perlu membuat pesanan dan membayar jumlah barangan yang sepadan pada masa yang sama Jumlah pesanan percuma akan diedarkan dalam bentuk sampul merah dengan jumlah yang sama. Seterusnya, saya akan bawakan kepada anda cara menerima sampul merah tempahan percuma Taobao pada tahun 2024: dapatkannya Bagi pengguna yang percuma, kelayakan sampul merah akan dikeluarkan kepada kad dan pakej kupon, yang dalam keadaan pengaktifan; versi web Taobao pada masa ini tidak mempunyai kad dan pakej kupon, dan hanya memaparkan rekod kemenangan bagi acara pesanan percuma; Cara mendapatkan sampul merah percuma Taobao 20241. Bagi pengguna yang mendapatkan pesanan percuma, kelayakan sampul merah akan diedarkan kepada pakej kad dan kupon, yang sedang dalam keadaan menunggu pengaktifan 2. Versi web Taobao pada masa ini tidak mempunyai pakej kad dan kupon, dan hanya memaparkan rekod kemenangan bagi aktiviti pesanan percuma ;3.

Taobao ialah perisian membeli-belah dalam talian yang biasa digunakan untuk ramai rakan Anda biasanya membuat pesanan dan membeli banyak perkara daripada Taobao Ia menyediakan pengguna dengan fungsi peringatan sampul merah, jadi cepat dan semak bahasa Cina laman web. Senarai langkah untuk mematikan peringatan sampul merah pada Taobao 1. Buka pusat peribadi APP Taobao dan pilih butang [Tetapan] untuk memasuki halaman. 2. Cari pilihan [Pemberitahuan Mesej] Di sini anda boleh memilih suis tekan mesej Cari mesej sampul merah dan matikan suis. 3. Atau anda boleh mematikan kebenaran pemberitahuan APP Taobao melalui halaman tetapan telefon mudah alih anda, supaya semua mesej daripada Taobao tidak akan memasuki tekan dan hanya boleh dilihat selepas menghidupkannya. 4. Pengguna boleh menetapkan jenis mesej yang mereka ingin terima, yang menjadikannya lebih mudah untuk digunakan.

Bagaimana untuk menggunakan sampul merah percuma Taobao 510? Taobao baru-baru ini melancarkan acara tempahan percuma untuk meraikan ulang tahunnya yang ke-510 Acara ini membolehkan anda mendapat pesanan sampul merah secara percuma, dan saya percaya ramai rakan yang ingin menyertai acara ini , tetapi mereka tidak Jika anda tahu penggunaan khusus, mari kita lihat pengenalan yang berkaitan hari ini. Arahan untuk menggunakan Paket Merah Tempahan Percuma Ulang Tahun ke-510 Taobao: Pek merah pesanan percuma boleh digunakan selepas semua pesanan yang dibuat untuk soalan tekaan disahkan dan diterima. 1. Pengguna boleh mengeluarkan dan mendapatkan semula sampul merah percuma melalui versi web Taobao Pada masa ini, tiada kad dan pakej kupon, tetapi ia boleh dilihat di [APP Taobao-Sampul Merah Taobao Saya-Hak Saya]. Bagi pengguna yang merebut pesanan percuma, kelayakan sampul merah akan diedarkan kepada kad dan pakej kupon, yang dalam keadaan pengaktifan kad dan pakej kupon sedang berjalan untuk memenangi hadiah.

1. Buka apl Taobao, klik [Taobao Saya] di penjuru kanan sebelah bawah dan klik [Tetapan] di penjuru kanan sebelah atas. 2. Pilih [Penyelesaian Pedagang], klik [Buka Kedai Taobao] dan pilih [Pedagang Umum]. 3. Dalam antara muka [Pembukaan Kedai Percuma], pengguna boleh melihat proses khusus membuka kedai [Pedagang Peribadi]. 4. Namakan kedai anda, kemudian klik [Buka kedai], semak ketiga-tiga item dan klik [Buka kedai untuk 0 yuan]. 5. Akhir sekali lengkapkan [Real Person Authentication] dan lengkapkan [Basic Store Information] untuk berjaya membuka kedai.

Apabila membeli-belah di Taobao, kami sering menggunakan sampul merah percuma untuk menikmati diskaun. Tetapi jika kami memerlukan bayaran balik, adakah sampul merah percuma ini akan dikembalikan? Mari kita lihat jawapan kepada soalan ini. Adakah sampul merah percuma Taobao akan dikembalikan, bergantung pada situasi, apabila anda menerima sampul merah, sampul merah dalam keadaan pengaktifan belum selesai Sebelum menebus produk, sampul merah yang akan diaktifkan tidak diaktifkan dan tidak boleh digunakan buat sementara waktu. Anda akan menunggu sehingga penerimaan produk yang dibeli disahkan , sampul merah yang perlu diaktifkan boleh digunakan. Sekiranya terdapat masalah dengan produk selepas menggunakan sampul merah percuma dan ia perlu dipulangkan, maka pemulangan sampul merah tersebut perlu dinilai mengikut situasi sebenar: 1. Peraturan Bayaran Balik 11. Jika bayaran balik berlaku selepas sampul merah digunakan, sampul merah akan dikembalikan mengikut kadar. 2. Jika tidak tertunggak, tempoh penggunaan sampul merah yang dipulangkan adalah tempoh penggunaan asal Jika tertunggak, ia akan dikeluarkan dalam tempoh 7 hari.

Model AniPortrait adalah sumber terbuka dan boleh dimainkan secara bebas. "Alat produktiviti baharu untuk Xiaopozhan Ghost Zone Baru-baru ini, projek baharu yang dikeluarkan oleh Tencent Open Source menerima penilaian sedemikian di Twitter. Projek ini ialah AniPortrait, yang menjana potret animasi berkualiti tinggi berdasarkan audio dan imej rujukan. Tanpa berlengah lagi, mari kita lihat demo yang mungkin diberi amaran oleh surat peguam: Imej anime juga boleh bercakap dengan mudah: Projek itu telah menerima pujian meluas selepas hanya beberapa hari sejak ia dilancarkan: bilangan Bintang GitHub telah melebihi 2,800. Mari kita lihat inovasi AniPortrait. Tajuk kertas: AniPortrait:Sintesis Dipacu Audio

Soalan Pemenang Taobao pada 31 Mac: Dalam Dinasti Tang, apakah yang orang masih boleh panggil sebagai bapa mereka tidak tahu apa yang mereka boleh panggil sebagai bapa mereka pada Dinasti Tang Kemudian editor akan membawakan anda 3.31 Taobao Winner Daily yang saya rasa hari ini? jawapan dikongsi, jika anda berminat, datang dan ketahui. Jawapan Teka Harian Taobao Pemenang Besar Taobao 31 Mac: Pada Dinasti Tang, adakah orang masih boleh memanggil bapa mereka Soalan: Pada Dinasti Tang, adakah orang masih boleh menghubungi bapa mereka Jawapan: B. Analisis jawapan saudara: 1. Klik di sini untuk mencari Petunjuk. Anda boleh mencari jawapan kepada soalan pada halaman seperti yang ditunjukkan di bawah 2. Orang-orang dalam Dinasti Tang boleh memanggil bapa mereka sebagai abang Dalam "Buku Lama Tang·Biografi Wang Ju", "Xuanzong berkata: Abang keempat adalah baik dan berbakti"; 3. "Abang keempat" di sini merujuk kepada bapa Xuanzong, Ruizong, pada masa yang sama
