标签:使用 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