实现中又删节了几个接口
<?php
/**
* 自有用户中心,应用端接口类
* Enter description here ...
* @author blue
*
*/
class MyCenter{
//应用Key,唯一表明应用的身份
private $key='<保密>';
//用户密钥,不在网络上传输
private $secret='<保密>';
//自有用户中心接口地址
private $apiUrl='<保密>';
/**
* 构造一个错误消息
错误编码 错误消息
1 用户名(Name)不允许特殊字符
2 用户名(Name)已经被使用
3 用户不存在
4 用户名(Name)不匹配
5 密码(Password)错误
6 禁止登录
7 附加信息(Key)已经存在
8 附加信息(Key)不存在
9 其它错误
* @param unknown_type $code
* @param unknown_type $message
*/
private function error($code,$message){
return array('ErrorCode'=>$code,'ErrorMessage'=>$message);
}
/**
* 注册,同步方式
* 在自有用户中心注册一个新用户,如果成功,返回一个新的用户编号
* 此操作不修改此用户的登录状态
* 要修改用户的登录状态,请使用setLogin方法
* @param unknown_type $name 用户名(多应用间唯一)
* @param unknown_type $password 密码(MD5)
* @param unknown_type $others 其它附加信息
*/
public function register($name,$password,$others=array()){
//用户名不能为空
if(!$name){
return $this->error(9, '缺少必要的参数:Name');
}
//用户名必须是字符串
if(!is_string($name)){
return $this->error(9, '参数数据类型错误:Name');
}
//用户名只允许汉字,字母,数字以及下划线
if(!preg_match('/[\w'.chr(0xa1).'-'.chr(0xff).']+/')){
return $this->error(1, '用户名中不允许包含特殊字符.');
}
//构造全部参数数组
$params=array_merge($others,array('name'=>$name,'password'=>md5($password)));
//调用通用接口
return $this->sync('Register', $params);
}
/**
* 登录,同步
* 自有用户中心此用户是否允许登录,如果成功,返回此用户唯一编号
* 此操作不修改此用户的登录状态
* 要修改用户的登录状态,请使用setLogin方法
* @param unknown_type $name 用户名
* @param unknown_type $password 密码
*/
public function login($name,$password){
//用户名不能为空
if(!$name){
return $this->error(9, '缺少必要的参数:Name');
}
//用户名必须是字符串
if(!is_string($name)){
return $this->error(9, '参数数据类型错误:Name');
}
//密码不能为空
if(!$password){
return $this->error(9, '缺少必要的参数:Password');
}
return $this->sync('Login', array('name'=>$name,'password'=>md5($password)));
}
/**
* 修改密码,同步
* 通知自有用户中心修改指定用户的密码,不返回数据
* @param unknown_type $id 用户编号
* @param unknown_type $old 原有密码
* @param unknown_type $new 新密码
*/
public function changePassword($id,$old,$new){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
//原密码不能为空
if(!$old){
return $this->error(9,'缺少必要的参数:Old Password');
}
//新密码不能为空
if(!$new){
return $this->error(9, '缺少必要的参数:New Password');
}
return $this->sync('ChangePassword',array('id'=>$id,'password'=>$old,'new'=>$new));
}
/**
* 修改用户名称,同步
* 通知自有用户中心修改指定用户的名称,不返回数据
* @param unknown_type $id 用户编号
* @param unknown_type $name 新用户名
*/
public function rename($id,$name){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
//用户名不能为空
if(!$name){
return $this->error(9, '缺少必要的参数:Name');
}
//用户名必须是字符串
if(!is_string($name)){
return $this->error(9, '参数数据类型错误:Name');
}
//用户名只允许汉字,字母,数字以及下划线
if(!preg_match('/[\w'.chr(0xa1).'-'.chr(0xff).']+/',$name)){
return $this->error(1, '用户名中不允许包含特殊字符.');
}
return $this->sync('Rename',array('id'=>$id,'name'=>$name));
}
/**
* 增加附加信息
* 在自有用户中心为指定用户保存一条附加信息
* 增加与修改合并到同一个接口中
* @param unknown_type $id 用户编号
* @param unknown_type $key 附加信息的键(只允许字母数字汉字下划线)
* @param unknown_type $value 附加信息的值 串/文件超链接
* @param unknown_type $type 类型:Text/File
*/
public function insert($id,$key,$value,$type='Text'){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
//附加信息的键不能为空
if(!$key){
return $this->error(9,'缺少必要的参数:Key');
}
//键只允许汉字,字母,数字以及下划线
if(!preg_match('/[\w'.chr(0xa1).'-'.chr(0xff).']+/',$key)){
return $this->error(1, '附加信息的键不允许包含特殊字符.');
}
//类型只允许Text/File
if($type!=='Text' and $type!=='File'){
return $this->error(9, '附加信息类型错误:Type');
}
return $this->sync('Insert',array('id'=>$id,'key'=>$key,'value'=>$value,'type'=>$type));
}
/**
* 删除指定用户的指定附加信息
* @param unknown_type $id 用户编号
* @param unknown_type $key 附加信息的Key
*/
public function delete($id,$key){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
//附加信息的键不能为空
if(!$key){
return $this->error(9,'缺少必要的参数:Key');
}
//键只允许汉字,字母,数字以及下划线
if(!preg_match('/[\w'.chr(0xa1).'-'.chr(0xff).']+/',$key)){
return $this->error(1, '附加信息的键不允许包含特殊字符.');
}
return $this->sync('Delete',array('id'=>$id,'key'=>$key));
}
/**
* 查询一条附加信息的值
* @param unknown_type $id 用户编号
* @param unknown_type $key 附加信息的Key
*/
public function select($id,$key){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
//附加信息的键不能为空
if(!$key){
return $this->error(9,'缺少必要的参数:Key');
}
//键只允许汉字,字母,数字以及下划线
if(!preg_match('/[\w'.chr(0xa1).'-'.chr(0xff).']+/',$key)){
return $this->error(1, '附加信息的键不允许包含特殊字符.');
}
return $this->sync('Select',array('id'=>$id,'key'=>$key));
}
/**
* 获取联合登录区域代码,同步
* 调用此段代码前,应用需要在SESSION中自行保存跳转地址(用户想要去的页面,如商品详细页)
* @param unknown_type $redirect 回调地址
* 这个地址是用来处理后继事情的,包括同步登录状态,跳转到用户想要去的页面
*/
public function unionShow($redirect){
if(!$redirect){
return $this->error(1, '缺少必要的参数:Redirect');
}
return $this->sync('UnionShow',array('redirect'=>$redirect));
}
/**
* 获取联合登录方的信息
* @param unknown_type $id 用户编号
* @return array:
Array(
array('<合作方>','<合作方编号>'),
...
)
*/
public function unionGet($id){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
return $this->sync('UnionGet',array('id'=>$id));
}
/**
* 更新自有用户中心的登录状态,异步方式
* 登录状态在应用和自有用户中心 双方 同时 保存
* @param unknown_type $id 用户编号 如为0表示 取消当前用户的登录状态
* @param unknown_type $redirect 完成后的回调地址
*/
public function setLogin($id,$redirect){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
if(!$redirect){
return $this->error(1, '缺少必要的参数:Redirect');
}
$this->async('SetLogin', $redirect,array('id'=>$id));
}
/**
* 获取自有用户中心的登录状态,异步方式
* @param unknown_type $redirect 回调地址
* 回调后,会有一个参数id 表示用户编号
*/
public function getLogin($redirect){
if(!$redirect){
return $this->error(1, '缺少必要的参数:Redirect');
}
$this->async('GetLogin', $redirect);
}
/**
* 处理同步请求
* 应用在调用同步请求后等待返回值,继续后继处理
* @param unknown_type $action 接口名称
* @param unknown_type $params 接口参数
* @return 自有用户中心 返回的数据
*/
private function sync($action,$params){
$uniqId=uniqid();
$ret=file_get_contents($this->apiUrl,false,stream_context_create(array(
'key'=>$this->key,
'serial'=>$uniqId,
'request'=>$this->encrypt($this->encrypt(http_build_query($params), $uniqId), $this->secret)
)));
$return=array();
parse_str($this->decrypt($ret, $this->secret),$return);
return $return;
}
/**
* 处理异步请求
* 应用在调用异步请求后,不要等待返回值,页面会跳转到自有用户中心
* 自有用户中心在完成处理后,会主动跳转回应用,并带相应参数
* @param unknown_type $action 接口名称
* @param unknown_type $redirect 回调地址
* @param unknown_type $params 其它参数
*/
private function async($action,$redirect,$params=array()){
$uniqId=uniqid();
$params['redirect']=$redirect;
header('Location:'.$this->apiUrl);
echo http_build_query(array(
'key'=>$this->key,
'serial'=>$uniqId,
'request'=>$this->encrypt($this->encrypt(http_build_query($params), $uniqId), $this->secret)
));
exit;
}
/**
* 解密
* @param unknown_type $content 密文
* @param unknown_type $key 密钥
*/
private function decrypt($content,$key){
<保密>
}
/**
* 加密
* @param unknown_type $content 明文
* @param unknown_type $key 密钥
*/
private function encrypt($content,$key){
<保密>
}
}
阅读(52) | 评论(0) | 转发(0) |
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
<?php
/**
* 自有用户中心,应用端接口类
* Enter description here ...
* @author blue
*
*/
class MyCenter{
//应用Key,唯一表明应用的身份
private $key='<保密>';
//用户密钥,不在网络上传输
private $secret='<保密>';
//自有用户中心接口地址
private $apiUrl='<保密>';
/**
* 构造一个错误消息
错误编码 错误消息
1 用户名(Name)不允许特殊字符
2 用户名(Name)已经被使用
3 用户不存在
4 用户名(Name)不匹配
5 密码(Password)错误
6 禁止登录
7 附加信息(Key)已经存在
8 附加信息(Key)不存在
9 其它错误
* @param unknown_type $code
* @param unknown_type $message
*/
private function error($code,$message){
return array('ErrorCode'=>$code,'ErrorMessage'=>$message);
}
/**
* 注册,同步方式
* 在自有用户中心注册一个新用户,如果成功,返回一个新的用户编号
* 此操作不修改此用户的登录状态
* 要修改用户的登录状态,请使用setLogin方法
* @param unknown_type $name 用户名(多应用间唯一)
* @param unknown_type $password 密码(MD5)
* @param unknown_type $others 其它附加信息
*/
public function register($name,$password,$others=array()){
//用户名不能为空
if(!$name){
return $this->error(9, '缺少必要的参数:Name');
}
//用户名必须是字符串
if(!is_string($name)){
return $this->error(9, '参数数据类型错误:Name');
}
//用户名只允许汉字,字母,数字以及下划线
if(!preg_match('/[\w'.chr(0xa1).'-'.chr(0xff).']+/')){
return $this->error(1, '用户名中不允许包含特殊字符.');
}
//构造全部参数数组
$params=array_merge($others,array('name'=>$name,'password'=>md5($password)));
//调用通用接口
return $this->sync('Register', $params);
}
/**
* 登录,同步
* 自有用户中心此用户是否允许登录,如果成功,返回此用户唯一编号
* 此操作不修改此用户的登录状态
* 要修改用户的登录状态,请使用setLogin方法
* @param unknown_type $name 用户名
* @param unknown_type $password 密码
*/
public function login($name,$password){
//用户名不能为空
if(!$name){
return $this->error(9, '缺少必要的参数:Name');
}
//用户名必须是字符串
if(!is_string($name)){
return $this->error(9, '参数数据类型错误:Name');
}
//密码不能为空
if(!$password){
return $this->error(9, '缺少必要的参数:Password');
}
return $this->sync('Login', array('name'=>$name,'password'=>md5($password)));
}
/**
* 修改密码,同步
* 通知自有用户中心修改指定用户的密码,不返回数据
* @param unknown_type $id 用户编号
* @param unknown_type $old 原有密码
* @param unknown_type $new 新密码
*/
public function changePassword($id,$old,$new){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
//原密码不能为空
if(!$old){
return $this->error(9,'缺少必要的参数:Old Password');
}
//新密码不能为空
if(!$new){
return $this->error(9, '缺少必要的参数:New Password');
}
return $this->sync('ChangePassword',array('id'=>$id,'password'=>$old,'new'=>$new));
}
/**
* 修改用户名称,同步
* 通知自有用户中心修改指定用户的名称,不返回数据
* @param unknown_type $id 用户编号
* @param unknown_type $name 新用户名
*/
public function rename($id,$name){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
//用户名不能为空
if(!$name){
return $this->error(9, '缺少必要的参数:Name');
}
//用户名必须是字符串
if(!is_string($name)){
return $this->error(9, '参数数据类型错误:Name');
}
//用户名只允许汉字,字母,数字以及下划线
if(!preg_match('/[\w'.chr(0xa1).'-'.chr(0xff).']+/',$name)){
return $this->error(1, '用户名中不允许包含特殊字符.');
}
return $this->sync('Rename',array('id'=>$id,'name'=>$name));
}
/**
* 增加附加信息
* 在自有用户中心为指定用户保存一条附加信息
* 增加与修改合并到同一个接口中
* @param unknown_type $id 用户编号
* @param unknown_type $key 附加信息的键(只允许字母数字汉字下划线)
* @param unknown_type $value 附加信息的值 串/文件超链接
* @param unknown_type $type 类型:Text/File
*/
public function insert($id,$key,$value,$type='Text'){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
//附加信息的键不能为空
if(!$key){
return $this->error(9,'缺少必要的参数:Key');
}
//键只允许汉字,字母,数字以及下划线
if(!preg_match('/[\w'.chr(0xa1).'-'.chr(0xff).']+/',$key)){
return $this->error(1, '附加信息的键不允许包含特殊字符.');
}
//类型只允许Text/File
if($type!=='Text' and $type!=='File'){
return $this->error(9, '附加信息类型错误:Type');
}
return $this->sync('Insert',array('id'=>$id,'key'=>$key,'value'=>$value,'type'=>$type));
}
/**
* 删除指定用户的指定附加信息
* @param unknown_type $id 用户编号
* @param unknown_type $key 附加信息的Key
*/
public function delete($id,$key){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
//附加信息的键不能为空
if(!$key){
return $this->error(9,'缺少必要的参数:Key');
}
//键只允许汉字,字母,数字以及下划线
if(!preg_match('/[\w'.chr(0xa1).'-'.chr(0xff).']+/',$key)){
return $this->error(1, '附加信息的键不允许包含特殊字符.');
}
return $this->sync('Delete',array('id'=>$id,'key'=>$key));
}
/**
* 查询一条附加信息的值
* @param unknown_type $id 用户编号
* @param unknown_type $key 附加信息的Key
*/
public function select($id,$key){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
//附加信息的键不能为空
if(!$key){
return $this->error(9,'缺少必要的参数:Key');
}
//键只允许汉字,字母,数字以及下划线
if(!preg_match('/[\w'.chr(0xa1).'-'.chr(0xff).']+/',$key)){
return $this->error(1, '附加信息的键不允许包含特殊字符.');
}
return $this->sync('Select',array('id'=>$id,'key'=>$key));
}
/**
* 获取联合登录区域代码,同步
* 调用此段代码前,应用需要在SESSION中自行保存跳转地址(用户想要去的页面,如商品详细页)
* @param unknown_type $redirect 回调地址
* 这个地址是用来处理后继事情的,包括同步登录状态,跳转到用户想要去的页面
*/
public function unionShow($redirect){
if(!$redirect){
return $this->error(1, '缺少必要的参数:Redirect');
}
return $this->sync('UnionShow',array('redirect'=>$redirect));
}
/**
* 获取联合登录方的信息
* @param unknown_type $id 用户编号
* @return array:
Array(
array('<合作方>','<合作方编号>'),
...
)
*/
public function unionGet($id){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
return $this->sync('UnionGet',array('id'=>$id));
}
/**
* 更新自有用户中心的登录状态,异步方式
* 登录状态在应用和自有用户中心 双方 同时 保存
* @param unknown_type $id 用户编号 如为0表示 取消当前用户的登录状态
* @param unknown_type $redirect 完成后的回调地址
*/
public function setLogin($id,$redirect){
//用户编号不能为空
if(!$id){
return $this->error(9, '缺少必要的参数:Id');
}
if(!$redirect){
return $this->error(1, '缺少必要的参数:Redirect');
}
$this->async('SetLogin', $redirect,array('id'=>$id));
}
/**
* 获取自有用户中心的登录状态,异步方式
* @param unknown_type $redirect 回调地址
* 回调后,会有一个参数id 表示用户编号
*/
public function getLogin($redirect){
if(!$redirect){
return $this->error(1, '缺少必要的参数:Redirect');
}
$this->async('GetLogin', $redirect);
}
/**
* 处理同步请求
* 应用在调用同步请求后等待返回值,继续后继处理
* @param unknown_type $action 接口名称
* @param unknown_type $params 接口参数
* @return 自有用户中心 返回的数据
*/
private function sync($action,$params){
$uniqId=uniqid();
$ret=file_get_contents($this->apiUrl,false,stream_context_create(array(
'key'=>$this->key,
'serial'=>$uniqId,
'request'=>$this->encrypt($this->encrypt(http_build_query($params), $uniqId), $this->secret)
)));
$return=array();
parse_str($this->decrypt($ret, $this->secret),$return);
return $return;
}
/**
* 处理异步请求
* 应用在调用异步请求后,不要等待返回值,页面会跳转到自有用户中心
* 自有用户中心在完成处理后,会主动跳转回应用,并带相应参数
* @param unknown_type $action 接口名称
* @param unknown_type $redirect 回调地址
* @param unknown_type $params 其它参数
*/
private function async($action,$redirect,$params=array()){
$uniqId=uniqid();
$params['redirect']=$redirect;
header('Location:'.$this->apiUrl);
echo http_build_query(array(
'key'=>$this->key,
'serial'=>$uniqId,
'request'=>$this->encrypt($this->encrypt(http_build_query($params), $uniqId), $this->secret)
));
exit;
}
/**
* 解密
* @param unknown_type $content 密文
* @param unknown_type $key 密钥
*/
private function decrypt($content,$key){
<保密>
}
/**
* 加密
* @param unknown_type $content 明文
* @param unknown_type $key 密钥
*/
private function encrypt($content,$key){
<保密>
}
}
相关热门文章
给主人留下些什么吧!~~
评论热议