标签:使用 os io 2014 cti ar 管理 new
描述:我写了个登陆器 无非就是登陆和注册这2个功能,当然还有一个验证码功能
根据职责性,我登陆器不涉及任何用户有关操作。
但我需要规定用户模型必须有以下几个功能,我登陆器才能使用,登陆、注册、根据名字获取用户的个人信息。
所以我设置如下
<?php
interface IMember {
/**
* 根据用户名获取用户信息 用户名不指定可以是邮箱、昵称或者手机号码
* @param String $username
*/
public function getOneMemberByUsername($username);
/**
* 登陆检测
*/
public function login($user);
/**
* 新增用户
*/
public function register($user);
}
有了这个规定之后,我的登陆器就可以写了
<?php
/**
* WCMS 登陆器 只跟用户有关注册、登陆有关 其他无关 判断有无登陆 可以设置cookie
* 描述 调用了MemberService指定接口 login register getOneMemberByUsername
* @author wolf
* @since 2014-08-02
* @version 第4次简化
*
*/
class AnonymousController extends Action {
const COOKIENAME = ‘user‘;
/**
* 管理员登录口
*/
public function admin() {
if (isset ( $_COOKIE [COOKIENAME] )) {
$userInfo = self::getMemberService ()->getOneMemberByUsername ( $_COOKIE [COOKIENAME] );
$this->view ()->assign ( ‘user‘, $userInfo );
$this->view ()->assign ( "userinfo", $userInfo );
}
$this->view ()->display ( ‘file:anonymous/login.tpl‘ );
}
/**
* 用户注册 接口 调用用户服务
* 只检测提交的字段是否合法
* @todo 默认用户组未添加
*/
public function register() {
$group = self::getMemberService ()->getMemberGroup ();
$this->view ()->assign ( "group", $group );
$this->view ()->display ( ‘mysql:register.tpl‘ );
}
/**
* 用户提交注册
*/
public function setRegister() {
$rs = self::getMemberService ()->register ( $_POST );
$this->sendNotice ( $rs, null, false );
}
/**
* 普通会员登录
*/
public function login() {
//导入推荐用户
$this->loginExtend ();
if (isset ( $_COOKIE [COOKIENAME] )) {
$userInfo = self::getMemberService ()->getOneMemberByUsername ( $_COOKIE [COOKIENAME] );
$this->view ()->assign ( ‘user‘, $userInfo );
$this->view ()->assign ( "userinfo", $userInfo );
}
$this->view ()->display ( ‘mysql:login.tpl‘ );
}
/**
* 登录扩展信息 DIY
*/
private function loginExtend() {
$userface = self::getMemberService ()->getRandFace ( 12 );
$this->view ()->assign ( ‘face‘, $userface );
}
/**
* 生成验证码
*/
public function captcha() {
require ‘Captcha.php‘;
//确保每次都能取到新值
unset ( $_SESSION [‘authum_session‘] );
// 实例化一个对象
$_vc = new Captcha ();
$_vc->doimg ();
$_SESSION [‘authnum_session‘] = $_vc->getCode ();
}
/**
* 登录验证
*/
public function setLogin() {
$rs = self::getMemberService ()->login ( $_POST );
//登陆成功 默认记录8个小时
if ($rs == SUCCESS) {
setcookie ( COOKIENAME, $_POST [‘username‘], time () + 3600 * 10, "/" );
}
$this->sendNotice ( $rs, null, false );
}
/**
* 退出登录 同步登录
*/
public function signout() {
setcookie ( COOKIENAME, "", - 86400, "/" );
$this->redirect ( "退出成功!", ‘/anonymous/login‘ );
}
/**
* 获取用户服务类
*/
public static function getMemberService() {
return new MemberService ();
}
}
Interface接口的设置是由其他模块决定的,布布扣,bubuko.com
标签:使用 os io 2014 cti ar 管理 new
原文地址:http://my.oschina.net/u/554046/blog/297459