WCMS 登陆器

Interface接口的设置是由其余模块决定的php

描述:我写了个登录器   无非就是登录和注册这2个功能,固然还有一个验证码功能mysql

根据职责性,我登录器不涉及任何用户有关操做。sql

但我须要规定用户模型必须有如下几个功能,我登录器才能使用,登录、注册、根据名字获取用户的我的信息。cookie

因此我设置以下session

<?php
interface IMember {
 
 /**
  * 根据用户名获取用户信息 用户名不指定能够是邮箱、昵称或者手机号码
  * @param String $username
  */
 public function getOneMemberByUsername($username);
 
 /**
  * 登录检测
  */
 public function login($user);
 /**
  * 新增用户
  */
 public function register($user);
}

 

有了这个规定以后,个人登录器就能够写了ui

<?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 ();
 }
}
相关文章
相关标签/搜索