public function callback($type = null, $code = null)
 {
     header("Content-type: text/html; charset=utf-8");
     (empty($type) || empty($code)) && $this->error('参数错误');
     import('Org.ThinkSDK.ThinkOauth');
     $sns = ThinkOauth::getInstance($type);
     //腾讯微博需传递的额外参数
     $extend = null;
     if ($type == 'tencent') {
         $extend = array('openid' => $this->_get('openid'), 'openkey' => $this->_get('openkey'));
     }
     $tokenArr = $sns->getAccessToken($code, $extend);
     $openid = $tokenArr['openid'];
     $token = $tokenArr['access_token'];
     setSessionCookie("openid", $openid);
     setSessionCookie("access_token", $token);
     //        $con = "openid:".$openid."\n"."token".$token;
     //	file_put_contents("1.txt", $con);
     //获取当前登录用户信息
     if ($openid) {
         $field = strtolower($type);
         setSessionCookie("field", $field);
         $userinfo = M("user")->field('id,name')->where("" . $field . "= '" . $openid . "'")->find();
         if ($userinfo) {
             //若是有该账号就登录
             setSessionCookie("userid", $userinfo['id']);
             setSessionCookie("username", $userinfo['name']);
             echo "<script>document.location.href='" . __APP__ . "';</script>";
             exit;
         } else {
             //没有的话绑定
             $userid = getSessionCookie('userid');
             $username = getSessionCookie('username');
             if ($userid != '' && $username != '') {
                 //用户已登录,自动绑定
                 //绑定账号
                 M('user')->where("id = " . $userid . "")->save(array($field => $openid));
                 emptySessionCookie('type');
                 emptySessionCookie('openid');
                 $this->success("绑定成功!", "/");
             } else {
                 //用户未登录,跳转到绑定页面
                 if ($filed == 'qq') {
                     //针对新版qq互联在绑定页,要显示昵称,否则不通过***
                     $data = $sns->call('user/get_user_info');
                     $nickname = $data['nickname'];
                 } else {
                     $userinfo = A('Type', 'Event')->{$type}($tokenArr);
                     $nickname = $userinfo['name'];
                 }
                 setSessionCookie('nickname', $nickname);
                 $this->redirect("Index/bind");
             }
         }
     } else {
         echo "<script>alert('系统出错;请稍后再试!');document.location.href='" . __APP__ . "';</script>";
     }
 }
Example #2
0
 public function login()
 {
     if (IS_POST) {
         $username = I('username');
         $password = I('pwd');
         $auto = I('auto');
         $user = M('user')->where(array('username' => $username, 'password' => md5($password)))->find();
         if ($auto == 'on') {
             $ip = get_client_ip();
             $session_id = base64_encode($user['id'] . '|' . $ip);
             setcookie('remeber', $session_id, time() + 3600 * 24 * 30, '/');
         }
         if (isset($user)) {
             setSessionCookie("userid", $user['id']);
             $data['logintime'] = time();
             $data['loginip'] = get_client_ip();
             M('user')->where(array('id' => $user['id']))->save($data);
             backReload();
         }
     }
 }
 public function checkLogin()
 {
     $is_bind = I("post.is_bind", 0, 'int');
     $pwd = I('post.pwd');
     $username = I('post.username');
     if (checkEmail($username) == 'true') {
         $info = M("user")->field("id,nickname")->where("email = '" . $username . "'  AND pwd = '" . md5($pwd) . "'")->find();
     } else {
         $info = M("user")->field("id,nickname")->where("name = '" . $username . "'  AND pwd = '" . md5($pwd) . "'")->find();
     }
     if (empty($info)) {
         echo json_encode(array("error" => "您输入的用户名/邮箱/密码无效。"));
         exit;
     } else {
         $userid = $info['id'];
     }
     $nickname = $info['nickname'];
     $tip = "登录成功!";
     if ($is_bind == 1) {
         //若是绑定
         $openid = getSessionCookie("openid");
         if ($openid) {
             $field = getSessionCookie("field");
             $userinfo = M("user")->field('id,name')->where("" . $field . "= '" . $openid . "'")->find();
             if (!$userinfo) {
                 //没有的话绑定账号,送积分和发广告,有绑定的话直接登录
                 // 绑定账号
                 M('user')->where("id = " . $userid . "")->save(array($field => $openid));
                 emptySessionCookie('type');
                 emptySessionCookie('openid');
             }
         }
     }
     setSessionCookie("userid", $userid);
     setSessionCookie("username", getNickname($username, $nickname));
     echo json_encode(array("username" => $username, "userid" => $userid, "avatar" => getUserAvatar($userid), "tip" => $tip, "error" => ""));
 }
Example #4
0
function signup($req)
{
    $username = trim($req['username']);
    $email = trim($req['email']);
    $tel = trim($req['tel']);
    $password = $req['password'];
    $password2 = $req['password2'];
    $response['status'] = 0;
    if (empty($username)) {
        $response['msg'] = "用户名不能为空";
        echo json_encode($response);
        return;
    }
    if (strlen($username) < 2 || strlen($username) > 10) {
        $response['msg'] = "用户名长度需要在2到10位之间";
        echo json_encode($response);
        return;
    }
    if (UserService::verifyUsername($username)) {
        $response['msg'] = "用户名已存在";
        echo json_encode($response);
        return;
    }
    if (empty($email)) {
        $response['msg'] = "邮箱格式不正确";
        echo json_encode($response);
        return;
    }
    if (!UserHelper::emailFormatCheck($email)) {
        $response['msg'] = "邮箱格式不正确";
        echo json_encode($response);
        return;
    }
    if (UserService::verifyEmail($email)) {
        $response['msg'] = "邮箱已被注册";
        echo json_encode($response);
        return;
    }
    if (!empty($tel) && !UserHelper::telFormatCheck($tel)) {
        $response['msg'] = "手机号码格式不对";
        echo json_encode($response);
        return;
    }
    if (UserService::verifyTel($tel)) {
        $response['msg'] = "手机号码已被注册";
        echo json_encode($response);
        return;
    }
    if (empty($password) || empty($password2)) {
        $response['msg'] = "密码不能为空";
        echo json_encode($response);
        return;
    }
    if ($password != $password2) {
        $response['msg'] = "两次输入的密码不一致";
        echo json_encode($response);
        return;
    }
    $user['userid'] = SequenceHelper::getSequence(SEQ_USER);
    $user['username'] = $username;
    $user['email'] = $email;
    $user['tel'] = $tel;
    $user['password'] = $password;
    $user['cdate'] = time();
    $user['udate'] = time();
    $id = UserService::signup($user);
    if ($id <= 0) {
        $response['msg'] = "抱歉,系统错误注册失败";
        echo json_encode($response);
        return;
    }
    $response['status'] = 1;
    setSessionCookie($user);
    echo json_encode($response);
}
Example #5
0
 public function savePassword()
 {
     if ($this->isPost() && !empty($_SESSION['id'])) {
         $user_id = $_SESSION['id'];
         $email = $_POST['email'];
         $newPassword = sha1($_POST['password']);
         $User = M('User');
         if ($currUser = $User->where("user_id = {$user_id} and email = '{$email}'")->field("user_name, password")->find()) {
             if ($newPassword != $currUser['password']) {
                 $data['user_id'] = $user_id;
                 $data['password'] = $newPassword;
                 $User->save($data);
             }
             setSessionCookie($user_id, $currUser['user_name']);
             unset($_SESSION['id']);
             $this->success();
         } else {
             $this->error('请输入原始注册邮箱');
         }
     } else {
         redirect(__APP__);
     }
 }