基于新手 小程序授权 2-----后端代码

浏览:1665 发布日期:2018/02/08 分类:用法示例 关键字: 小程序
之前发表的《基于新手 小程序授权》有人私信问后端代码。
把后端贴出来,经过项目运作是可行的。
有意见的可以提出来改进。
献丑了。
前端链接:http://www.thinkphp.cn/code/3982.html

/**
* 通过此方法获取随机数,但需要mycrpt支持
*/
function randomFromDev($len)
{
$fp = @fopen('/dev/urandom','rb');
$result = '';
if ($fp !== FALSE) {
$result .= @fread($fp, $len);
@fclose($fp);
}
else
{
trigger_error('Can not open /dev/urandom.');
}
// convert from binary to string
$result = base64_encode($result);
// remove none url chars
$result = strtr($result, '+/', '-_');
// Remove = from the end
$result = str_replace('=', ' ', $result);
return $result;
}
/**
* 小程序登录
* check_user 用于检查表是否存在unionid
*/
function onlogin(){
$code = $_GET['code'];
$url = "https://api.weixin.qq.com/sns/jscode2session?appid=XXXX&secret=XXXXX&js_code={$code}&grant_type=authorization_code";
$data = file_get_contents($url);
$data_arr = json_decode($data);
$usermodel = new model\user();
$user_id = $usermodel->check_user($data_arr);
$data_arr->user_id = $user_id;
$data = json_encode($data_arr);
$rd3_str = $this->randomFromDev(16);
$rd3_str = trim($rd3_str);
$redis = new Redis();
$redis->set($rd3_str,$data,86400);
die(json_encode(['rd3_session'=>$rd3_str]));
}
/**
* 检验是否过期
*/
function check_3rdsession(){
$rd3_session_str = $_GET['rd3_session'];
$redis = new Redis();
$rd3_session = $redis->get($rd3_session_str);
die(json_encode($rd3_session));
}
/**
* 写入用户信息
* update_info 跟新用户信息、这里有涉及其他的操作独立一个方法出来
*/
function setuserinfo(){
$rd3_session_str = $_POST['rd3_session'];
$redis = new Redis();
$rd3_session = $redis->get($rd3_session_str);
$info_json = json_decode($_POST['info_json']);
$usermodel = new model\user();
if($usermodel->update_info($rd3_session['user_id'],$info_json)){
die(json_encode(['code'=>1,'msg'=>'ok','user_info'=>$user_info]));
}else{
die(json_encode(['code'=>0,'msg'=>'error','user_info'=>$user_info]));
}
}
评论( 相关
后面还有条评论,点击查看>>