QQ登录获取openid后用户同步

来源:互联网 发布:csp绘画软件汉化 编辑:程序博客网 时间:2024/06/10 03:53
最近要用到QQ登录,要求可以和织梦的用户同步。刚刚改好,一团乱,但是能登录了~~存个档吧~~

<?php
/**
 * 腾讯织梦同步登录程序
 *
 * @version        11:06 2011年11月04日
 * @package        open.qq.com
 * @copyright      Copyright (c) 20011 - 2012, jackqn@msn.com.
 * @link           http://blog.csdn.net/jackqn
 * 用户名(如果用户跳过注册则提交openid),密码,openid,昵称,头像。性别
 * call_user_func(CheckUser,用户名,密码,openid,昵称,头像,性别,access_token);
 * 放于member文件夹下
 */
require_once("config.php");
error_reporting(0);
$params = $_POST;
$params['nickname']= iconv('UTF-8', 'gb2312', $params['nickname']);
$params['figureurl_2']= iconv('UTF-8', 'gb2312', $params['figureurl_2']);
$params['gender']= iconv('UTF-8', 'gb2312', $params['gender']);
//call_user_func(CheckUser,用户名,密码,openid,昵称,头像,性别,access_token);
$denglu=call_user_func(CheckUser,$params['user'],md5($params['pass']),$params["openid"],$params["nickname"],$params["figureurl_2"],$params["gender"],$params['access_token']);
if($denglu==1){
  ShowMsg("成功登录,5秒钟后转向系统主页...","index.php",0,2000);
}else{
ShowMsg("登录出错!", "-1", 0, 2000);
exit();
}
//检查用户是否可以登录
    function CheckUser($loginuser, $loginpwd,$openid,$nichkname,$figureurl,$gender,$access_token)
    {
        global $dsql;$access_time=time();
        $row = $dsql->GetOne("SELECT mid,matt,pwd,logintime FROM `#@__member` WHERE openid = '$openid' ");
        if(is_array($row))
        {//找到用户执行登录
$dsql->ExecuteNoneQuery("Update `#@__member` set `access_token`='$access_token',`access_time`='$access_time'  WHERE openid = '$openid' ");
putlogin($row['mid']);
return 1;
        }
        else
        {
//未找到用户,添加用户
if($loginuser=='')
{
//用openid的前6位位作为用户名和密码
$loginuser=substr($openid, 0, 6);
$loginpwd=substr($openid, 0, 6);
}
                    //注册织梦会员
          $row = $dsql->GetOne("SELECT `money`,`scores` FROM `#@__arcrank` WHERE `rank`='10' ");
          $scores = is_array($row) ? $row['scores'] : 0;
          $money = is_array($row) ? $row['money'] : 0;
          $logintime = $jointime = time();
          $loginip = $joinip = GetIP();
          $res = $dsql->ExecuteNoneQuery("INSERT INTO #@__member SET `mtype`='个人',`userid`='$loginuser',`pwd`='$loginpwd',`uname`='$nichkname',`sex`='$gender' ,`rank`='10',`money`='$money', `email`='$email', `scores`='$scores', `matt`='0', `face`='$figureurl',`safequestion`='0',`safeanswer`='', `jointime`='$jointime',`joinip`='$joinip',`logintime`='$logintime',`loginip`='$loginip',`openid`='$openid',`access_token`='$access_token',`access_time`='$access_time';");
          if($res) {
                 $mid = $dsql->GetLastID();
                  $data = array
                        (
                        0 => "INSERT INTO `#@__member_person` SET `mid`='$mid', `onlynet`='1', `sex`='$gender', `uname`='$nichkname', `qq`='', `msn`='', `tel`='', `mobile`='', `place`='', `oldplace`='0' ,
                                 `birthday`='1980-01-01', `star`='1', `income`='0', `education`='0', `height`='160', `bodytype`='0', `blood`='0', `vocation`='0', `smoke`='0', `marital`='0', `house`='0',
                       `drink`='0', `datingtype`='0', `language`='', `nature`='', `lovemsg`='', `address`='',`uptime`='0';",
                        1 => "INSERT INTO `#@__member_tj` SET `mid`='$mid',`article`='0',`album`='0',`archives`='0',`homecount`='0',`pagecount`='0',`feedback`='0',`friend`='0',`stow`='0';",
                        2 => "INSERT INTO `#@__member_space` SET `mid`='$mid',`pagesize`='10',`matt`='0',`spacename`='{$nichkname}的空间',`spacelogo`='',`spacestyle`='person', `sign`='',`spacenews`='';",
                        3 => "INSERT INTO `#@__member_flink` SET `mid`='$mid', `title`='网站', `url`='#';"
                        );                        
                        foreach($data as $val) $dsql->ExecuteNoneQuery($val);
                    }
//重新执行登录
$row = $dsql->GetOne("SELECT mid,matt,pwd,logintime FROM `#@__member` WHERE openid = '$openid' ");
if(is_array($row))

putlogin($row['mid']);
return 1;
}else{
return 0;
}
        }
    }
//登录
   function putlogin($uid)
    {
global $dsql;
        $LoginTime = time();
        $loginip = GetIP();
        $inquery = "UPDATE `#@__member` SET loginip='$loginip',logintime='".$LoginTime."' WHERE mid='".$uid."'";
        $dsql->ExecuteNoneQuery($inquery);
 putcookie('DedeUserID',$uid);
          putcookie('DedeLoginTime',$LoginTime);
    }
    function putcookie($key, $value, $kptime=3600000, $pa="/")
    {
global $cfg_cookie_encode,$cfg_domain_cookie;
        SetCookie($key, $value, time()+$kptime, $pa,$cfg_domain_cookie);
        SetCookie($key.'__ckMd5', substr(md5($cfg_cookie_encode.$value),0,16), time()+$kptime, $pa,$cfg_domain_cookie);
    }
?>
原创粉丝点击