利用php怎么实现一个自动登录微信并获取昵称的功能

发布时间:2021-02-18 14:55:53

来源:亿速云

阅读:58

作者:Leah

这篇文章将为大家详细讲解有关利用php怎么实现一个自动登录微信并获取昵称的功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。/**

* 获取当前页面完整URL地址

*/

function get_url() {

$sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';

$php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];

$path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';

$relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.$_SERVER['QUERY_STRING'] : $path_info);

return $sys_protocal.(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '').$relate_url;

}

$wxch_config = $db -> getRow("SELECT * FROM `ecs_weixin_config` WHERE `id` = 1");

$appid = $wxch_config['appid'];

$appsecret = $wxch_config['appsecret'];

$APPID = $appid;

$SCRETID =$appsecret;

if(!$_SESSION['user_id'] && strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false){

if (!isset($_GET['code']))

{

$backurl = get_url();

//$url = $jsApi->createOauthUrlForCode($backurl);

$url = "https://open.weixin.qq.com/connect/oauth3/authorize?appid=".$APPID."&redirect_uri=".urlencode($backurl)."&response_type=code&scope=snsapi_base&state=123#wechat_redirect";

//echo $url;

Header("Location: $url");

}else

{

//获取code码,以获取openid

$code = $_GET['code'];

$url = "https://api.weixin.qq.com/sns/oauth3/access_token?appid=".$APPID."&secret=".$SCRETID."&code=".$code."&grant_type=authorization_code";

$re = curl_get_contents1($url);

$rearr = json_decode($re,true);

$openid = $rearr['openid'];

//var_dump($rearr);

//$jsApi->setCode($code);

//$openid = $jsApi->getOpenid();

$user_name = $db->getOne("select uname from ecs_weixin_user where wxid = '{$openid}'");

if($openid && !$user_name){ //注册进入

$passw = md5('shanmao.me'.rand(1,18650144002));

$wxch_user_sql = "INSERT INTO `ecs_weixin_user` (`wxid`,`setp`) VALUES ('$openid','3')";

$db -> query($wxch_user_sql);

$ecs_user_id = $db -> insert_id();

if($ecs_user_id<=0){

exit('error get insert_id');

}

$url3 = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$APPID."&secret=".$SCRETID;

$re3 = curl_get_contents1($url3);

$re3arr = json_decode($re3,true);

$token = $re3arr['access_token'];

$url2 = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$token."&openid=".$openid."&lang=zh_CN";

$re2 = curl_get_contents1($url2);

$rearr2 = json_decode($re2,true);

$uc_username = $rearr2['nickname']?$rearr2['nickname']: 'doubag' . $ecs_user_id;

$time = gmtime();

$user_sql = "INSERT INTO `ecs_users` (`user_name`,`password`,`reg_time`) VALUES ('$uc_username','$passw','$time')";

$db -> query($user_sql);

$uc_update = "UPDATE ecs_weixin_user SET `uname` = '$uc_username' WHERE `uid` = '$ecs_user_id'";

$db -> query($uc_update);

$user->set_session($uc_username);

$user->set_cookie($uc_username,1);

update_user_info();

/*

$up_uid = get_affiliate();

if($up_uid>0){

$sql = 'UPDATE ecs_users SET parent_id = ' . $up_uid . ' WHERE user_id = ' . $ecs_user_id;

$db ->query($sql);

header('Location: user.php?newuser=1');

}*/

}else{

$user->set_session($user_name);

$user->set_cookie($user_name,1);

update_user_info();

}

//setcookie("sopenid",$openid,time()+864000,'/');

}

}

//var_dump($openid);

function curl_get_contents1($url) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_TIMEOUT, 2);

curl_setopt($ch, CURLOPT_USERAGENT, "IE 6.0");

curl_setopt($ch, CURLOPT_REFERER, "");

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

$r = curl_exec($ch);

curl_close($ch);

return $r;

}

关于利用php怎么实现一个自动登录微信并获取昵称的功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

php微信自动登录,利用php怎么实现一个自动登录微信并获取昵称的功能相关推荐

  1. 怎么用Android做登录界面,利用Android怎么制作一个APP登录界面

    利用Android怎么制作一个APP登录界面 发布时间:2020-12-02 17:09:10 来源:亿速云 阅读:79 作者:Leah 这期内容当中小编将会给大家带来有关利用Android怎么制作一 ...

  2. 利用因果图法对一个自动饮料售货机软件进行黑盒测试

    一.需求 设要对一个自动饮料售货机软件进行黑盒测试.该软件的规格说明如下:"有一个处理单价为1元5角的盒装饮料的自动售货机软件,若投入1元5角硬币,按下"可乐".&quo ...

  3. php利用微信支付充值,利用thinkPHP怎么实现一个微信支付功能

    利用thinkPHP怎么实现一个微信支付功能 发布时间:2020-12-09 16:43:35 来源:亿速云 阅读:56 作者:Leah 这篇文章给大家介绍利用thinkPHP怎么实现一个微信支付功能 ...

  4. python编写登录_通过Python编写一个简单登录功能过程解析

    通过Python编写一个简单登录功能过程解析 需求: 写一个登录的程序, 1.最多登陆失败3次 2.登录成功,提示欢迎xx登录,今天的日期是xxx,程序结束 3.要检验输入是否为空,账号和密码不能为空 ...

  5. 教程:如何利用Google AIY做一个自动撵猫神器?

    有人说,"当代人的最新炫富模式是--你有猫吗?"的确,喵星人的治愈系数在某些程度上,甚至已经盖过了美食.人类在这个"弱小"的萌物面前,也心甘情愿地俯首称臣. 国 ...

  6. 微信抢红包代码 python_用 Python 实现一个简单的微信红包算法

    今年过年各位一定在微信里抢了不少红包.那么当别人是手气王而你只抢到1分钱的时候,你有没有想过,如果你来实现红包的分配算法,会怎么写? 这里我给一个简单的实现方案. 基本思路就是,有多少个红包,就循环多 ...

  7. java自动投票软件_如何编写一个自动投票程序

    *********************************************************************************** *                ...

  8. 微信签到 表单 mysql_java做的一个简易的微信签到系统

    1.发送签到会提示你签到成功,并获得2积分 2.一天只能签到一次 3.连续一星期签到会额外送12个积分 4.可以查询你当前积分总数 效果图:本订阅好还在完善中,可能还不能用,不久后将会一步步完善功能, ...

  9. 微信扫码 - 关注公众号后网站自动注册并登录的实现

    微信扫码 - 关注公众号后网站自动注册并登录的实现 需求描述 在自己网站上点击微信登录,网站自己弹出一个二维码.扫描二维码后弹出公众号的关注界面.只要一关注公众号网站自动登录.第二次扫描登录的时候网站 ...

最新文章

  1. |DataDirectory|的使用
  2. Database Connection String
  3. 加载tensorflow模型后只运行变量名实现预测(sess.run)
  4. Windows10 UWP开发 - 响应式设计
  5. 《程序员》2月精彩内容:互联网应用架构面面观
  6. [bzoj1303][CQOI2009]中位数图
  7. 几种常用的清除浮动方法(一)
  8. 常用WebServices返回数据的4种方法比较
  9. 如何成功构建大规模 Web 搜索引擎架构?
  10. PyTorch 1.0 中文官方教程:使用 PyTorch 进行图像风格转换
  11. 苹果或推出不到两千元的iPhone!安卓手机不淡定了
  12. oracle update 改为 merge
  13. 如何从 iCloud 共享文件和文件夹?
  14. 参加香港亚洲秋季电子展经验点滴拾遗
  15. [工具推荐] IPv4 和 IPv6 网站测速工具
  16. 建立自己的kindle书库
  17. 网络流量分析——NPMD关注IT运维、识别宕机和运行不佳进行性能优化。智能化分析是关键-主动发现业务运行异常。科来做APT相关的安全分析...
  18. HTML5高级之position(定位)
  19. 微信小程序农历阳历日期选择器选中日期同时获取对应农/阳历日期 这个demo问题的修改
  20. 华为 watch fit 鸿蒙,华为新款智能手表 Watch Fit 曝光,矩形表盘,支持近 100 种运动模式...

热门文章

  1. Bailian3255 十进制到六进制【进制】
  2. 51Nod1682 中位数计数【中位数】
  3. I00019 生成全8数
  4. HDU5686 Problem B【递推】
  5. Spark utils —— 设置日志级别
  6. Java 源码 —— List
  7. apt-get install 的参数(add-apt-repository)
  8. 【学习 OpenCV】—— 将一个3通道的像素点转换到新的彩色空间
  9. 【笔试/面试】数组及其内存结构
  10. C基础——fopen() 的 mode参数