/**
* 返回 删除AttachmentIndex,SearchAll,Tag
* @param array $data 文档相关数据 array('arc_id' => 11, 'model_id' => 1);
* @return mixed
*/
function delete_att_tag_search($data) {
if (empty($data) || empty($data['arc_id']) || empty($data['model_id'])) {
return false;
}
if (is_array($data['arc_id'])) {
$where = array('arc_id' => array('IN', $data['arc_id']), 'model_id' => $data['model_id']);
} else {
$where = array('arc_id' => $data['arc_id'], 'model_id' => $data['model_id']);
}
//delete AttachmentIndex
M('AttachmentIndex')->where($where)->delete();
//delete SearchAll
M('SearchAll')->where($where)->delete();
//delete tag
$old_tag_info = M('TagIndex')->where($where)->field('tag_id, arc_id, cid')->select();
if (!empty($old_tag_info)) {
foreach ($old_tag_info as $val) {
M('TagIndex')->where(array('tag_id' => $val['tag_id'], 'arc_id' => $val['arc_id'], 'cid' => $val['cid']))->delete(); //不属于旧栏目了
M('Tag')->where(array('id' => $val['tag_id']))->setDec('num');
}
}
return true;
}
/**
* 保存日志
* @param integer $admin_id 管理员ID---可为0
* @param string $admin_name 管理员名称
* @param string $title 日志名称
* @param string $content 日志内容
* @param integer $operate_status 操作结果,0失败,1成功
* @param integer $login_flag 是否登录。1登录
* @return mixed
*/
function write_log($admin_id, $admin_name, $url, $title, $content, $operate_status = 0, $login_flag = 0) {
if (empty($url)) {
return false;
}
if (empty($admin_name)) {
$admin_name = 'Unknown';
}
$data = array(
'aid' => $admin_id,
'username' => $admin_name,
'url' => htmlspecialchars($url),
'title' => $title,
'content' => $content,
'useragent' => htmlspecialchars($_SERVER['HTTP_USER_AGENT']),
'login_flag' => $login_flag,
'ip' => get_client_ip(),
'operate_status' => $operate_status,
'operate_time' => date('Y-m-d H:i:s'),
);
$result = M('AdminLog')->add($data);
return $result;
}
/**
* 返回保存到AttachmentIndex表
* @param string $ip IP
* @return mixed
*/
function run_bad_ip($ip) {
if (empty($ip)) {
return false;
}
$before_time = date("Y-m-d H:i:s", time() - 3600); //一个小时内,计算一个小时内失败次数
$where = array('login_flag' => 1, 'operate_status' => 1, 'ip' => $ip, 'operate_time' => array('gt', $before_time)); //搜索同IP登录成功
$last_id = M('AdminLog')->where($where)->order('id desc')->getField('id');
$where = array('login_flag' => 1, 'operate_status' => 0, 'ip' => $ip, 'operate_time' => array('gt', $before_time));
$where = array();
if ($last_id) {
$where['id'] = array('gt', $last_id);
}
$where['login_flag'] = 1;
$where['operate_status'] = 0;
$where['ip'] = $ip;
$where['operate_time'] = array('gt', $before_time);
$fail_num = M('AdminLog')->where($where)->order('id desc')->count(); //1个小时内连续失败次数(从最后一次开始登录成功开始计算)
if ($fail_num >= 10) {
//--失败后--禁止IP2个小时内的访问
$expire_time = date("Y-m-d H:i:s", time() + 2 * 3600);
$where = array('ip' => $ip);
$ret = M('BadIp')->where($where)->find();
$data = array(
'ip' => $ip,
'forever_flag' => 0,
'status' => 1,
'note' => '登录失败多次,锁定IP',
'expire_time' => $expire_time,
'update_time' => date('Y-m-d H:i:s'),
);
if (!$ret) {
M('BadIp')->add($data);
} else {
if ($ret['forever_flag'] == 0 || ($ret['forever_flag'] == 1 && $ret['status'] == 0)) {
$data['id'] = $ret['id'];
if (strtotime($ret['expire_time']) > strtotime($expire_time)) {
$data['expire_time'] = $ret['expire_time'];
}
M('BadIp')->save($data);
}
}
}
return true;
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。