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>"; } }
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" => "")); }
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); }
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__); } }