You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
4.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace application\model;
use framework\core\Model;
/**
* 用户模型类
*/
class UserModel extends Model{
/**
* 插入一个用户
* @param string $u 用户名
* @param string $p 密码
* @param string $m 注册时间
* @param string $e 邮箱
* @param string $t 唯一标识符
* @param string $i ip地址
* @return boot 成功返回true失败返回false
*/
public function user_add($u,$p,$m,$e,$t,$i){
return $this->mysqli->query("INSERT INTO {$this->prefix}user (`username`, `password`, `time`, `email`,`activatecode`,`ip`) values ('{$u}','{$p}','{$m}','{$e}','{$t}','{$i}')");
}
/**
* 注册一个用户(重新发送邮件的)
* @param string $u 用户名
* @param string $p 密码
* @param string $m 注册时间
* @param string $e 邮箱
* @param string $t 唯一标识符
* @return boot 成功返回true失败返回false
*/
public function user_update($u,$p,$m,$e,$t){
return $this->mysqli->query("UPDATE {$this->prefix}user SET username = '{$u}', password = '{$p}', time = '{$m}', email = '{$e}', activatecode = '{$t}' WHERE (username = '{$u}' || email = '{$e}') and activation = 'n'");
}
/**
* 查询用户名或邮箱是否注册
* @param string $u 用户名
* @param string $e 邮箱
* @return array/false 成功返回array失败返回false
*/
public function hasUserEmail($u,$e){
return $this->mysqli->fetch("SELECT activation FROM {$this->prefix}user WHERE username = '{$u}' || email = '{$e}'");
}
/**
* 查询用户状态是否正常
* @param string $u 用户名和密码
* @return boot 失败返回false成功查询结果
*/
public function user_query($u,$p){
return $this->mysqli->fetch("SELECT uid,username,role,isseal,activation FROM {$this->prefix}user WHERE username = '{$u}' and password = '{$p}'");
}
/**
* 查询激活码是否有效(存在并且没有过期)
* @param string $t 唯一激活码
* @param string $t 当前时间
* @param string $t 有效时间
* @return boot 成功返回true失败false
*/
public function activate($token,$time,$etime){
return $this->mysqli->fetch("SELECT 1 FROM {$this->prefix}user WHERE activatecode = '{$token}' and {$time} - time < {$etime}");
}
/**
* 激活用户
* @param string $token 激活码
* @return boot 成功返回true失败返回false
*/
public function user_activate($token){
return $this->mysqli->query("UPDATE {$this->prefix}user SET activation = 'y', activatecode = '' WHERE activatecode = '{$token}'");
}
/**
* 按条件查询所有用户
* @param string $page 查询页数
* @param string $limit 查询数量
* @param string $where 查询条件
* @return array 成功返回array失败返回false
*/
public function user_queryAll($page,$limit,$where=''){
return $this->mysqli->fetchAll("SELECT uid,username,role,time,ip,isseal,email,activation FROM {$this->prefix}user $where limit $page, $limit");
}
/**
* 查询所有用户数量
*/
public function user_count(){
return $this->mysqli->fetch("SELECT count(*) FROM {$this->prefix}user")['count(*)'];
}
/**
* 批量删除用户
*/
public function user_del($userids){
return $this->mysqli->query("DELETE FROM {$this->prefix}user WHERE uid in($userids) and role != 'admin'");
}
/**
* 启用或禁用一个用户
*/
public function user_seal($uid,$seal = 'y'){
return $this->mysqli->query("UPDATE {$this->prefix}user SET isseal = '{$seal}' WHERE uid = '{$uid}'");
}
/**
* 查询指定用户信息
* @return [type] [description]
*/
public function user_fetch($uid){
return $this->mysqli->fetch("SELECT username,role,time,ip,photo,email FROM {$this->prefix}user WHERE uid = '{$uid}'");
}
/**
* 查询用户密码
* @return [type] [description]
*/
public function user_pass($uid){
return $this->mysqli->fetch("SELECT password FROM {$this->prefix}user WHERE uid = '{$uid}'");
}
/**
* 修改用户资料
* @return [type] [description]
*/
public function user_modify($user,$pwd,$uid){
return $this->mysqli->query("UPDATE {$this->prefix}user SET username = '{$user}', password = '{$pwd}' WHERE uid = '{$uid}'");
}
/**
* 修改用户头像
* @return [type] [description]
*/
public function user_photo($photo,$uid){
return $this->mysqli->query("UPDATE {$this->prefix}user SET photo = '{$photo}' WHERE uid = '{$uid}'");
}
/**
* 检测除自己以外用户名是否存在
* @return [type] [description]
*/
public function user_isexis($user,$uid){
return $this->mysqli->fetch("SELECT 1 FROM {$this->prefix}user WHERE username = '{$user}' and uid != '{$uid}'");
}
/**
* 返回指定ip在24小时内的注册数量
* @return [type] [description]
*/
public function user_limitip($ip){
return $this->mysqli->fetch("SELECT count(*) FROM {$this->prefix}user WHERE ip = '{$ip}' and (unix_timestamp(now()) - time) < (3600*24)")['count(*)'];
}
}