diff --git a/application/module/Users/Account.php b/application/module/Users/Account.php new file mode 100644 index 00000000..f3845214 --- /dev/null +++ b/application/module/Users/Account.php @@ -0,0 +1,379 @@ +db = \Zend_Registry::get('db'); + }else{ + $this->db = $db; + } + + $this->config = \Zend_Registry::get('config'); + + if($initializingListener === TRUE) + { + $this->loadListener(); + } + } + + public function loadListener() + { + //主要操作,账号注册,登录,设置session等 + $AccountListener = new AccountListener(); + @$this->events()->attachAggregate($AccountListener); + + //账户编辑 + $EditListener = new EditListener(); + @$this->events()->attachAggregate($EditListener); + + //账户安全性(找回密码) + $PwdListener = new PwdListener(); + @$this->events()->attachAggregate($PwdListener); + } + + public function events(\Zend_EventManager_EventCollection $events = NULL) + { + if ($events !== NULL) { + $this->events = $events; + } elseif ($this->events === NULL) { + $this->events = new \Zend_EventManager_EventManager(__CLASS__); + } + return $this->events; + } + + //获取账号信息,数组 + public function getAccountInfo($id = 0) + { + if($id == 0) + { + $id = view::User('id'); + } + $sql = "SELECT * FROM {$this->memberTable} WHERE id=$id"; + $rs = $this->db->query($sql); + return $rs->fetch(); + } + + //注册 + public function register($data) + { + $params = compact('data'); + $results = $this->events()->trigger('register.checkParam', $this, $params); + $cache_data = $results->bottom(); + + if($cache_data !== true) + { + if(!is_array($cache_data)) + { + return array('error'=>$cache_data); + }else{ + return $cache_data; + } + } + + $results = $this->events()->trigger('register.checkUser', $this, $params); + $cache_data = $results->bottom(); + + if($cache_data !== true) + { + if(!is_array($cache_data)) + { + return array('error'=>$cache_data); + }else{ + return $cache_data; + } + } + + $loginData = array( + 'username'=>$data['username'], + 'password'=>$data['password'] + ); + + $data['password'] = md5($data['password']); + $data['usertype'] = "member"; + unset($data['confirm_password']); + + $dbh = new dbh(); + + $id = $dbh->insert($this->memberTable,$data,true); + + if(!empty($id) && is_numeric($id)) + { + $this->storeLogin($loginData); + $mb = new Member(); + $mb->putcookie($data[$this->FieldUsername],$data[$this->FieldPasword]); //username, md5(password) + $params = compact('data','id'); + $results = $this->events()->trigger('register.success', $this, $params); + return array("success" => 1); + }else{ + if($id === false) + { + return array('error'=>'服务器开小差了,请稍后再试'); + }else{ + return array('error'=>'服务器处理中遇到错误,请联系管理员'); + } + } + + }//register + + //登陆 + public function login($data,$return_user_info = false) + { + $results = $this->events()->trigger('login.checkParam', $this, compact('data')); + $cache_data = $results->bottom(); + + if($cache_data !== true) + { + if(!is_array($cache_data)) + { + return array('error'=>$cache_data); + }else{ + return $cache_data; + } + } + + $state = $this->storeLogin($data); + + $mb = new Member(); + $mb->putcookie($data[$this->FieldUsername],md5($data[$this->FieldPasword])); + + if(!$return_user_info) + return $state; + else + return view::User(); + }//login + + //storeLogin + //将登录信息保存在session和cookie中 + public function storeLogin($data,$md5verify = true) + { + $auth = \Zend_Auth::getInstance(); + $authAdapter = new \Zend_Auth_Adapter_DbTable($this->db); + $authAdapter->setTableName($this->memberTable) + ->setIdentityColumn($this->FieldUsername) + ->setCredentialColumn($this->FieldPasword); + + if(empty($data[$this->FieldPasword])) + { + $password = "0"; + }else{ + if($md5verify == false) + { + $password = $data[$this->FieldPasword]; + }else{ + $password = md5($data[$this->FieldPasword]); + } + } + + $authAdapter->setIdentity($data[$this->FieldUsername])->setCredential($password); + + $result = $auth->authenticate($authAdapter); + + if ($result->isValid()) { + + $user = $authAdapter->getResultRowObject(null,$this->FieldPasword); + $email = $user->email; + $results = $this->events()->trigger('login.success.createAvatar', $this, compact('email')); + $user->avatar = $results->bottom(); + $auth->getStorage()->write($user); + + $id = $user->id; + @$results = $this->events()->trigger('login.success.updateStatus', $this, compact('id')); + + return array('success'=>1); + }else{ + return array("error"=>"登录失败,请重试"); + } + + return array('error'=>'处理中发现错误,请重试'); + } + + //注册信息参数 + public function getParam(\Zend_Controller_Request_Abstract $request) + { + $data = array( + 'username'=>$request->getParam('username'), + 'password'=>$request->getParam('password'), + 'confirm_password'=>$request->getParam('confirm_password'), + 'email'=>$request->getParam('email'), + 'realname'=>$request->getParam('realname') + ); + return $data; + } + + //获取用户账户修改参数 + public function getEditParam(\Zend_Controller_Request_Abstract $request) + { + $type = $request->getParam('type'); + + if($type == "general") + { + $data = array( + 'realname'=>$request->getParam('realname'), + 'signature'=>$request->getParam('signature'), + 'description'=>$request->getParam('description') + ); + } + + if($type == "password") + { + $data = array( + 'password' => $request->getParam('password'), + 'password_new'=>$request->getParam('password_new'), + 'password_confirm'=>$request->getParam('password_confirm') + ); + } + return $data; + } + + //编辑 + public function edit($data,$type) + { + $results = $this->events()->trigger('edit.checkParam', $this, compact('data','type')); + $cache_data = $results->bottom(); + + if($cache_data !== true) + { + return $cache_data; + } + + if($type == "general") + { + $data['signature'] = htmlspecialchars($data['signature']); + $data['description'] = htmlspecialchars($data['description']); + }else if($type == "password") + { + $data['password'] = md5($data['password_new']); + unset($data['password_new']); + unset($data['password_confirm']); + }else{ + return "参数错误"; + } + + $dbh = new dbh(); + $uid = view::User('id'); + if($dbh->update($this->memberTable,$data," id=$uid") === true) + { + return true; + }else{ + return false; + } + } + + //找回密码 + public function getMyPassword($email) + { + $results = $this->events()->trigger('pwd.forgot.checkParam', $this, compact('email')); + $cache_data = $results->bottom(); + + if($cache_data !== true) + { + return $cache_data; + } + + $sql = "SELECT * FROM {$this->memberTable} WHERE email='$email'"; + $rs = $this->db->query($sql); + $row = $rs->fetch(); + + if(!isset($row['username']) || empty($row['username'])) + { + return array('error'=>"此邮箱并未注册",'place'=>'email'); + } + + $salt = md5($email.'---'.$row['username']); + + $sql = "UPDATE {$this->memberTable} SET salt='$salt' WHERE id={$row['id']}"; + $state = $this->db->exec($sql); + + if($state<1) + { + return array('error'=>"处理中出现错误,请重试",'place'=>'email'); + } + + $mail_template = "forgotpassword"; + $mail_data = array( + 'name'=>$row['realname'], + 'link'=> view::getHostLink().'/account/getpassword/salt/'.$salt + ); + + $mail = new Mail(); + + $mail->loadTemplate($mail_template,$mail_data); + $mail->addTo($email,$row['realname']); + $mail->send(); + + return array("success"=>1); + } + + //重置密码 + public function resetPassword($data) + { + $results = $this->events()->trigger('pwd.reset.checkParam', $this, compact('data')); + $cache_data = $results->bottom(); + + if($cache_data !== true) + { + return $cache_data; + } + + $sql = "SELECT * FROM {$this->memberTable} WHERE salt=?"; + $sth = $this->db->prepare($sql); + $sth->execute(array($data['salt'])); + $row = $sth->fetch(); + + if(!isset($row['username']) || empty($row['username'])) + { + return array('error'=>"您提供的校验码不正确,请重新申请重置密码",'place'=>'confirm_password'); + } + + if($row['username'] !== $data['username']) + { + return array('error'=>"您提供的校验码不正确,请重新申请重置密码",'place'=>'confirm_password'); + } + + $sql = "UPDATE {$this->memberTable} SET password='".md5($data['password'])."',salt='' WHERE id={$row['id']}"; + $this->db->exec($sql); + + $mail_template = "getpassworded"; + $mail_data = array( + 'name'=>$row['realname'], + ); + $mail = new Mail(); + $mail->loadTemplate($mail_template,$mail_data); + $mail->addTo($row['email'],$row['realname']); + $mail->send(); + + return true; + + } + +} \ No newline at end of file diff --git a/application/module/Users/Event/EditEvent.php b/application/module/Users/Event/EditEvent.php new file mode 100644 index 00000000..99488769 --- /dev/null +++ b/application/module/Users/Event/EditEvent.php @@ -0,0 +1,11 @@ +event = new \Zend_EventManager_EventManager(); + + if(empty($type)) + { + $type = "both"; + } + + $this->type = $type; + } + + public function attach(\Zend_EventManager_EventCollection $events) + { + if($this->type == "both") + { + $this->attachRegisterEvents($events); + $this->attachLoginEvents($events); + } + + if($this->type == "register") + { + $this->attachRegisterEvents($events); + } + + if($this->type == "login") + { + $this->attachLoginEvents($events); + } + } + + public function detach(\Zend_EventManager_EventCollection $events) + { + + } + + private function attachRegisterEvents(\Zend_EventManager_EventCollection $events) + { + $_Events = new RegisterOperate(); + $events->attach('register.checkParam', array($_Events, 'checkParam'), 100); + $events->attach('register.checkUser', array($_Events, 'checkUser'), 80); + $events->attach('register.success', array($_Events, 'registerSuccess'), 50); + } + + private function attachLoginEvents(\Zend_EventManager_EventCollection $events) + { + $_Events = new LoginOperate(); + $events->attach('login.checkParam', array($_Events, 'checkParam'), 100); + $events->attach('login.success.updateStatus', array($_Events, 'updateStatus'), 50); + $events->attach('login.success.createAvatar', array($_Events, 'createAvatar'), 50); + } + +} diff --git a/application/module/Users/Listener/EditListener.php b/application/module/Users/Listener/EditListener.php new file mode 100644 index 00000000..e2a1a5d0 --- /dev/null +++ b/application/module/Users/Listener/EditListener.php @@ -0,0 +1,35 @@ +event = new \Zend_EventManager_EventManager(); + + if(empty($type)) + { + $type = "both"; + } + + $this->type = $type; + } + + public function attach(\Zend_EventManager_EventCollection $events) + { + $_Events = new EditOperate(); + $events->attach('edit.checkParam', array($_Events, 'checkParam'), 100); + $events->attach('edit.success', array($_Events, 'editSuccess'), 50); + } + + public function detach(\Zend_EventManager_EventCollection $events) + { + + } + +} diff --git a/application/module/Users/Listener/PwdListener.php b/application/module/Users/Listener/PwdListener.php new file mode 100644 index 00000000..5d86ae07 --- /dev/null +++ b/application/module/Users/Listener/PwdListener.php @@ -0,0 +1,30 @@ +event = new \Zend_EventManager_EventManager(); + } + + public function attach(\Zend_EventManager_EventCollection $events) + { + $_Events = new PwdOperate(); + $events->attach('pwd.forgot.checkParam', array($_Events, 'forgotPwdCheckParam'), 100); + $events->attach('pwd.forgot.sendmail', array($_Events, 'sendGetPasswordMail'), 50); + $events->attach('pwd.reset.checkParam', array($_Events, 'resetPwdCheckParam'), 100); + $events->attach('pwd.reset.sendmail', array($_Events, 'sendGetPasswordMail'), 50); + } + + public function detach(\Zend_EventManager_EventCollection $events) + { + + } + +} diff --git a/application/module/Users/Member.php b/application/module/Users/Member.php new file mode 100644 index 00000000..fcb2bce2 --- /dev/null +++ b/application/module/Users/Member.php @@ -0,0 +1,138 @@ +db = \Zend_Registry::get('db'); + }else{ + $this->db = $db; + } + + $this->config = \Zend_Registry::get('config'); + + if(!empty($_COOKIE['scr'])) + { + $this->scr = $_COOKIE['scr']; + } + if(!empty($_COOKIE['user'])) + { + $this->user= $_COOKIE['user']; + } + } + + + /** + * 检测cookie + */ + public function checkcookie() + { + $uname = $this->user; + $hash = $this->scr; + + if(!empty($uname) && !empty($hash)) + { + if (preg_match("/[<|>|#|$|%|^|*|(|)|{|}|'|\"|;|:]/i",$uname) || preg_match("/[<|>|#|$|%|^|*|(|)|{|}|'|\"|;|:]/i",$hash)) + { + $this->mid=0; + return false; + } + else{ + $sql = "select {$this->FieldUsername} as userid,{$this->FieldPasword} as pwd from {$this->memberTable} where {$this->FieldUsername}='$uname'"; + $rs = $this->db->query($sql); + $row = $rs->fetch(); + $scr = $this->makescr($row['userid'],$row['pwd']); + + if($hash == $scr) + { + $this->srpwd=$row['pwd']; + return true; + } + else { + return false; + } + }//cookie安全 + }else { + return false; + }//exit + }//function checkcookie + + /** + * putcookie + * + * 登陆成功后放置cookie,包含安全码 + * + * @param String $uname + * @param String $pwd + * @param Int $time + */ + public function putcookie($uname,$pwd,$time = 604800) + { + try { + $scrString = $this->makescr($uname,$pwd);//加密验证串:防止用户密码被盗;防止伪造cookie。 + + if(!is_numeric($time)) + { + $time = 604800; + } + + setcookie('user',$uname,time()+$time,'/'); + setcookie('scr',$scrString,time()+$time,'/'); + + return true; + } catch (Exception $e) { + return false; + } + + }//function putcookie + + /** + * 生成安全码 + * + * @param String $u + * @param String $p + */ + public function makescr($u,$p) + { + return substr(md5($u.$p.$this->ck),3,20); + } + + /** + * 清除cookie + */ + static function flushcookie() + { + setcookie('user','',time()-99999,'/'); + setcookie('scr','',time()-99999,'/'); + } + + public function getUser() + { + $sql = "SELECT * FROM ".$this->memberTable." m ORDER BY m.id DESC"; + $rs = $this->db->query($sql); + return $rs->fetchAll(); + } + +} \ No newline at end of file diff --git a/application/module/Users/Operation/EditOperate.php b/application/module/Users/Operation/EditOperate.php new file mode 100644 index 00000000..0356ad46 --- /dev/null +++ b/application/module/Users/Operation/EditOperate.php @@ -0,0 +1,88 @@ +db = \Zend_Registry::get('db'); + }else{ + $this->db = $db; + } + + $this->config = \Zend_Registry::get('config'); + } + + public function checkParam(\Zend_EventManager_Event $e){ + + $data = $e->getParam('data'); + $type = $e->getParam('type'); + + if($type == 'general') + { + + if(empty($data['realname'])) + { + return "请输入真实姓名"; + } + + if(mb_strlen($data['realname'],"UTF-8")>10 ) + { + return "姓名不要超过10个字"; + } + } + + if($type == "password") + { + if(strlen($data['password'])>18 || strlen($data['password_new'])>18) + { + return "密码过长"; + } + if(strlen($data['password_new'])<=6 || strlen($data['password_confirm'])<=6) + { + return "密码过短"; + } + if(md5($data['password_new']) != md5($data['password_confirm'])) + { + return "两次输入的密码不同"; + } + + $uid = view::User('id'); + $sql = "SELECT {$this->FieldPasword} FROM {$this->tbl_member} WHERE id=$uid"; + $rs = $this->db->query($sql); + $row = $rs->fetch(); + + if(md5($data['password']) != $row[$this->FieldPasword]) + { + return "原密码不正确"; + } + } + + return true; + }//checkParam + + public function editSuccess(\Zend_EventManager_Event $e){ + + $data = $e->getParam('data'); + + + return true; + } + +} \ No newline at end of file diff --git a/application/module/Users/Operation/LoginOperate.php b/application/module/Users/Operation/LoginOperate.php new file mode 100644 index 00000000..8f21200d --- /dev/null +++ b/application/module/Users/Operation/LoginOperate.php @@ -0,0 +1,115 @@ +db = \Zend_Registry::get('db'); + }else{ + $this->db = $db; + } + + $this->config = \Zend_Registry::get('config'); + } + + public function checkParam(\Zend_EventManager_Event $e){ + + $data = $e->getParam('data'); + + if(!is_array($data)) + { + return "参数错误"; + } + + if(empty($data['username'])) + { + return array('error'=>"请输入用户名",'place'=>'username'); + } + + if(!empty($data['username'])) + { + if(!preg_match("/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/",$data['username'])) + { + return array('error'=>"用户名应当以字母开头,由字母数字和下划线组成,并且长度在5到25个字符之间",'place'=>'username'); + } + } + + if(empty($data['password'])) + { + return array('error'=>"请输入密码",'place'=>'password'); + } + + $sql = "SELECT id,{$this->FieldPasword} FROM {$this->tbl_member} WHERE {$this->FieldUsername}=?"; + $sth = $this->db->prepare($sql); + $rs = $sth->execute(array($data[$this->FieldUsername])); + $row = $sth->fetch(); + + if(isset($row['id']) && !empty($row['id'])) + { + if(strlen($row[$this->FieldPasword]) !== 32) + { + return array('error'=>"您的密码或因安全原因或其他问题已经被重置,请先重置密码再登陆",'place'=>'password'); + } + if($row[$this->FieldPasword] !== md5($data['password'])) + { + return array('error'=>"密码错误",'place'=>'password'); + } + return true; + }else{ + return array('error'=>"用户不存在",'place'=>'username'); + } + + }//checkParam + + public function updateStatus(\Zend_EventManager_Event $e){ + + $id = (int)$e->getParam('id'); + + if(!is_numeric($id)) + { + return false; + } + + $update = array( + $this->FieldLastlogin => date("Y-m-d H:i:s"), + //$this->FieldLastloginIp => $_SERVER["REMOTE_ADDR"] + ); + + $dbh = new dbh(); + @$statusUpdate = $dbh->update($this->tbl_member,$update," id=$id "); + + return true; + }//loginSuccess + + public function createAvatar(\Zend_EventManager_Event $e){ + + $email = $e->getParam('email'); + $avatar = new Gravatar(); + return $avatar->Get($email); + + }//loginSuccess + + //检查token表记录 + public function checkOAuthToken() + { + + } + +} \ No newline at end of file diff --git a/application/module/Users/Operation/PwdOperate.php b/application/module/Users/Operation/PwdOperate.php new file mode 100644 index 00000000..ae87513f --- /dev/null +++ b/application/module/Users/Operation/PwdOperate.php @@ -0,0 +1,94 @@ +db = \Zend_Registry::get('db'); + }else{ + $this->db = $db; + } + + $this->config = \Zend_Registry::get('config'); + } + + public function forgotPwdCheckParam(\Zend_EventManager_Event $e){ + + $email = $e->getParam('email'); + + if(empty($email)) + { + return array('error'=>"请输入电子邮箱,作为找回密码和接受通知的联系方式",'place'=>'email'); + } + + if (!preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',$email)) + { + return array('error'=>"请输入正确的电子邮件",'place'=>'email'); + } + + return true; + }//checkParam + + public function sendGetPasswordMail(\Zend_EventManager_Event $e){ + + $email = $e->getParam('email'); + + + return true; + } + + public function resetPwdCheckParam(\Zend_EventManager_Event $e) + { + $data = $e->getParam('data'); + + if(empty($data['username'])) + { + return array('error'=>"请输入用户名",'place'=>'username'); + } + + if(empty($data['password'])) + { + return array('error'=>"请输入密码",'place'=>'password'); + } + + if(strlen($data['password']) < 6) + { + return array('error'=>"密码长度太短,为了安全最少输入6位哦",'place'=>'password'); + } + + if(strlen($data['password']) > 14) + { + return array('error'=>"密码太长,亲您记得住吗?不要超过14位哦",'place'=>'password'); + } + + if(empty($data['confirm_password'])) + { + return array('error'=>"请再次输入密码已确认输入正确",'place'=>'confirm_password'); + } + + if(md5($data['password']) != md5($data['confirm_password'])) + { + return array('error'=>"两次输入的密码不同,请重新输入",'place'=>'confirm_password'); + } + + return true; + } + +} \ No newline at end of file diff --git a/application/module/Users/Operation/RegisterOperate.php b/application/module/Users/Operation/RegisterOperate.php new file mode 100644 index 00000000..09bdc9dd --- /dev/null +++ b/application/module/Users/Operation/RegisterOperate.php @@ -0,0 +1,182 @@ +db = \Zend_Registry::get('db'); + }else{ + $this->db = $db; + } + + $this->config = \Zend_Registry::get('config'); + } + + public function checkParam(\Zend_EventManager_Event $e){ + + $data = $e->getParam('data'); + + if(!is_array($data)) + { + return "参数错误"; + } + + if(empty($data['username'])) + { + return array('error'=>"请输入用户名",'place'=>'username'); + } + + if(!empty($data['username'])) + { + if(!preg_match("/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/",$data['username'])) + { + return array('error'=>"用户名应当以字母开头,由字母数字和下划线组成,并且长度在5到16个字符之间",'place'=>'username'); + } + } + + if(empty($data['password'])) + { + return array('error'=>"请输入密码",'place'=>'password'); + } + + if(strlen($data['password']) < 6) + { + return array('error'=>"密码长度太短,为了安全最少输入6位",'place'=>'password'); + } + + if(strlen($data['password']) > 14) + { + return array('error'=>"密码太长,请不要超过14位",'place'=>'password'); + } + + if(empty($data['confirm_password'])) + { + return array('error'=>"请再次输入密码已确认输入正确",'place'=>'confirm_password'); + } + + if(md5($data['password']) != md5($data['confirm_password'])) + { + return array('error'=>"两次输入的密码不同,请重新输入",'place'=>'confirm_password'); + } + + if(empty($data['email'])) + { + return array('error'=>"请输入电子邮箱,作为找回密码和接受通知的联系方式",'place'=>'email'); + } + + if (!preg_match('/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',$data['email'])) + { + return array('error'=>"请输入正确的电子邮件,推荐使用QQ邮箱和Gmail邮箱",'place'=>'email'); + } + + if(empty($data['realname'])) + { + return array('error'=>"请输入姓名",'place'=>'realname'); + } + + if(mb_strlen($data['realname'],"UTF-8")>10 ) + { + return array('error'=>"真实姓名请不要超过10个字",'place'=>'realname'); + } + + return true; + }//checkParam + + public function checkUser(\Zend_EventManager_Event $e){ + + $data = $e->getParam('data'); + + if(!is_array($data)) + { + return "用户信息验证失败,请重新尝试"; + } + + $sql = "SELECT id,{$this->FieldUsername},{$this->FieldEmail} FROM ".$this->tbl_member." WHERE {$this->FieldUsername}='{$data['username']}' OR {$this->FieldEmail}='{$data['email']}'"; + + $rs = $this->db->query($sql); + + $rows = $rs->fetchAll(); + + if(count($rows) > 1) + { + return array('error'=>'您的用户名和邮箱已经注册过账号,您是否忘记了密码?','place'=>'username'); + } + + $row = $rows[0]; + + if(isset($row['id']) && !empty($row['id'])) + { + + if($row[$this->FieldUsername] == $data['username']) + { + return array('error'=>'您的用户名已经注册过账号,您是否忘记了密码?','place'=>'username'); + } + + if($row[$this->FieldEmail] == $data['email']) + { + return array('error'=>'您的邮箱已经注册过账号,请换一个邮箱','place'=>'email'); + } + + return array('error'=>'您的用户名或邮箱已经使用过,注册新账号请换一个用户名'); + } + + return true; + }//checkUser + + public function registerSuccess(\Zend_EventManager_Event $e){ + + $data = $e->getParam('data'); + + if(!is_array($data)) + { + return false; + } + + $id = $e->getParam('id'); + + if(!is_numeric($id)) + { + return false; + } + + $mail_template = "register"; + $mail_data = array( + 'name'=>$data['realname'], + 'content'=>$this->getMailContent() + ); + + $mail = new Mail(); + + $mail->loadTemplate($mail_template,$mail_data); + $mail->addTo($data['email'],$data['realname']); + $mail->send(); + + return true; + }//registerSuccess + + //邮件内容 + public function getMailContent() + { + $content = "欢迎注册"; + + return $content; + }//getMailContent(); + +} \ No newline at end of file diff --git a/application/module/Users/Users.php b/application/module/Users/Users.php new file mode 100644 index 00000000..df3d24a9 --- /dev/null +++ b/application/module/Users/Users.php @@ -0,0 +1,86 @@ +db = \Zend_Registry::get('db'); + }else{ + $this->db = $db; + } + + $this->table = new Table(); + + $this->config = \Zend_Registry::get('config'); + + if($accountClass === TRUE) + { + $this->account = new Account(); + } + } + + //通过email地址返回用户信息是否存在 + public function userExists($email = NULL) + { + if(empty($email)) + { + return false; + } + + if(empty($this->account)) + { + $account = new Account(FALSE); + }else{ + $account = $this->account; + } + + $sql = "SELECT * FROM {$account->memberTable} WHERE {$account->FieldEmail}=? LIMIT 1"; + $sth = $this->db->prepare($sql); + $sth->execute(array($email)); + $row = $sth->fetch(); + + unset($account); + + if(isset($row['id']) && !empty($row['id'])) + { + return $row; + }else{ + return false; + } + } + + public function storeNewAuthCredential($user) + { + if(get_class($user) != 'stdClass') + { + return false; + } + + $auth = \Zend_Auth::getInstance(); + + if($auth->getStorage()->write($user)) + return true; + else + return false; + } + + +} \ No newline at end of file