www.gusucode.com > Maybecms适合做企业站的PHP源码 v1.0源码程序 > Maybecms_v1.0/maybecms/model/user_model.class.php
<?php // +---------------------------------------------------------------------- // | MAYBECMS 用户模型 // +---------------------------------------------------------------------- // | Copyright (c) 2012-2014 http://www.maybecms.com, All rights reserved. // +---------------------------------------------------------------------- // | Author: Lou <379559090@qq.com> // +---------------------------------------------------------------------- defined('MAYBECMS_PATH') or exit; class user extends model { function __construct() { $this->table = 'user'; // 表名 $this->pri = array('uid'); // 主键 $this->maxid = 'uid'; // 自增字段 } // 根据用户名获取用户数据 public function get_user_by_username($username) { $data = $this->find_fetch(array('username'=>$username), array(), 0, 1); return $data ? array_pop($data) : array(); } //根据uid获取用户信息,包括扩展信息 public function get_user_by_uid( $uid = 0 ){ if( $uid == 0 ) $uid = session::get('_uid'); $data = $this->get($uid); if( $data ){ $data_info = $this->user_data->get($uid); if( is_array($data_info) ){ $data = array_merge($data_info,$data); } } return $data ? $data : array(); } //用户关联删除 public function xdelete($uid = 0){ if( $uid == 0 ) return 'UID参数错误!'; $where['uid'] = $uid; //所有收藏数据 $this->user_collect->find_delete($where); //所有投稿数据 $this->cms_content->table = 'cms_audit_article'; $this->cms_content->find_delete($where); //用户所有内容 //用户详细数据 $this->user_data->delete($uid); //用户基础数据 $this->delete($uid); return ''; } // 检查用户名是否合格 public function check_username(&$username) { $username = trim($username); if(empty($username)) { return '用户名不能为空哦!'; }elseif(utf8::strlen($username) > 16) { return '用户名不能大于16位哦!'; }elseif(str_replace(array("\t","\r","\n",' ',' ',',',',','-','"',"'",'\\','/','&','#','*'), '', $username) != $username) { return '用户名中含有非法字符!'; }elseif(htmlspecialchars($username) != $username) { return '用户名中不能含有<>!'; }elseif(utf8::strlen($username) < 2) { return '用户名不能小于2位哦!'; } // hook usre_model_check_username_after.php return ''; } // 返回安全的用户名 public function safe_username(&$username) { $username = str_replace(array("\t","\r","\n",' ',' ',',',',','-','"',"'",'\\','/','&','#','*'), '', $username); $username = htmlspecialchars($username); } // 检查密码是否合格 public function check_password(&$password) { if(empty($password)) { return '密码不能为空哦!'; }elseif(utf8::strlen($password) < 6) { return '密码不能小于6位哦!'; }elseif(utf8::strlen($password) > 32) { return '密码不能大于32位哦!'; } return ''; } // 验证密码是否相等 public function verify_password($password, $salt, $password_md5) { return get_password($password,$salt) == $password_md5; } // 防IP暴力破解 public function anti_ip_brute($ip) { $password_error = $this->runtime->get('password_error_'.$ip); return ($password_error && $password_error >= 8) ? true : false; } // 根据IP记录密码错误次数 public function password_error($ip) { $password_error = (int)$this->runtime->get('password_error_'.$ip); $password_error++; $this->runtime->set('password_error_'.$ip, $password_error, 450); } // 格式化后显示给用户 public function format(&$user) { if(!$user) return; $user['regdate'] = empty($user['regdate']) ? '0000-00-00 00:00' : date('Y-m-d H:i', $user['regdate']); $user['regip'] = long2ip($user['regip']); $user['logindate'] = empty($user['logindate']) ? '0000-00-00 00:00' : date('Y-m-d H:i', $user['logindate']); $user['loginip'] = long2ip($user['loginip']); $user['lastdate'] = empty($user['lastdate']) ? '0000-00-00 00:00' : date('Y-m-d H:i', $user['lastdate']); $user['lastip'] = long2ip($user['lastip']); $user['avatar'] = ( isset($user['avatar']) && empty($user['avatar']) ) ? '../static/img/avatar.png' : '../'.$user['avatar']; // hook usre_model_format_after.php } }