Commit cc12d987 authored by 蒋林's avatar 蒋林

添加登陆日志

parent 27e6c43d
...@@ -28,7 +28,7 @@ class Chigo extends BaseController ...@@ -28,7 +28,7 @@ class Chigo extends BaseController
self::$apiUrl = "http://{$_SERVER['HTTP_HOST']}/"; self::$apiUrl = "http://{$_SERVER['HTTP_HOST']}/";
$account = [ $account = [
0 => ['u' => '0200145', 'p' => '123456'], 0 => ['u' => '0200145', 'p' => '1234561'],
]; ];
$key = 0; $key = 0;
......
...@@ -27,6 +27,50 @@ function get_uuapi($imagePath, $sys='', $account='') ...@@ -27,6 +27,50 @@ function get_uuapi($imagePath, $sys='', $account='')
return $code; return $code;
} }
/**
* 登陆成功日志
* @param $sys
* @param $account
* @return mixed
*/
function login_success($sys, $account)
{
$CI =& get_instance();
$CI->load->model('login_log_model');
return $CI->login_log_model->success($sys, $account);
}
/**
* 登陆失败日志
* @param $sys
* @param $account
* @param $pwd
* @return mixed
*/
function login_fail($sys, $account, $pwd)
{
$CI =& get_instance();
$CI->load->model('login_log_model');
return $CI->login_log_model->fail($sys, $account, $pwd);
}
/**
* 登陆检查
* @param $sys
* @param $account
* @param $pwd
* @param $num
*/
function login_check($sys, $account, $pwd, $num)
{
$CI =& get_instance();
$CI->load->model('login_log_model');
$CI->login_log_model->failMaxNum($sys, $account, $pwd, $num);
}
/** /**
* 字符串aes加密/解密 * 字符串aes加密/解密
* @param $str * @param $str
......
...@@ -23,10 +23,16 @@ class SourceChigo extends Source ...@@ -23,10 +23,16 @@ class SourceChigo extends Source
//debug //debug
self::$debug = false; self::$debug = false;
//登陆检查
login_check(self::$app, self::$account['username'], self::$account['pwd'], 3);
//判断是否登陆 //判断是否登陆
$result = $this->IsLogin(); $result = $this->IsLogin();
if ($result == false) { if ($result == false) {
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, '登陆失败'); return_msg(false, '登陆失败');
} else {
login_success(self::$app, self::$account['username']);
} }
} }
...@@ -356,6 +362,7 @@ class SourceChigo extends Source ...@@ -356,6 +362,7 @@ class SourceChigo extends Source
$this->Debug('Login', $result); $this->Debug('Login', $result);
if (stripos($result['data'], '用户密码不正确') !== false) { if (stripos($result['data'], '用户密码不正确') !== false) {
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, '用户密码不正确!(-10001)'); return_msg(false, '用户密码不正确!(-10001)');
} }
......
...@@ -22,11 +22,17 @@ class SourceGalanz extends Source ...@@ -22,11 +22,17 @@ class SourceGalanz extends Source
//debug //debug
self::$debug = false; self::$debug = false;
//登陆检查
login_check(self::$app, self::$account['username'], self::$account['pwd'], 3);
//判断是否登陆 //判断是否登陆
$result = $this->IsLogin(); $result = $this->IsLogin();
if ($result == false) { if ($result == false) {
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, '登陆失败'); return_msg(false, '登陆失败');
} else {
login_success(self::$app, self::$account['username']);
} }
} }
...@@ -94,6 +100,7 @@ class SourceGalanz extends Source ...@@ -94,6 +100,7 @@ class SourceGalanz extends Source
$this->Debug('login', $result); $this->Debug('login', $result);
if (stripos($result['data'], '用户密码不正确') !== false) { if (stripos($result['data'], '用户密码不正确') !== false) {
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, '用户密码不正确(-10001)'); return_msg(false, '用户密码不正确(-10001)');
} }
......
...@@ -20,13 +20,18 @@ class SourceHisense extends Source ...@@ -20,13 +20,18 @@ class SourceHisense extends Source
self::$captchaFilePath = PUBDIR . "captcha/" . self::$app . "_" . md5(self::$account['username']) . ".gif"; self::$captchaFilePath = PUBDIR . "captcha/" . self::$app . "_" . md5(self::$account['username']) . ".gif";
//debug //debug
self::$debug = true; self::$debug = false;
//登陆检查
login_check(self::$app, self::$account['username'], self::$account['pwd'], 3);
//判断是否登陆 //判断是否登陆
$result = $this->IsLogin(); $result = $this->IsLogin();
if ($result == false) { if ($result == false) {
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, '登陆失败'); return_msg(false, '登陆失败');
} else { } else {
login_success(self::$app, self::$account['username']);
$this->LoginInit(); $this->LoginInit();
} }
} }
...@@ -131,7 +136,7 @@ class SourceHisense extends Source ...@@ -131,7 +136,7 @@ class SourceHisense extends Source
public function IsLogin($num = 0) public function IsLogin($num = 0)
{ {
if ($num > 3) { if ($num > 2) {
return false; return false;
} }
...@@ -195,10 +200,17 @@ class SourceHisense extends Source ...@@ -195,10 +200,17 @@ class SourceHisense extends Source
$this->Debug('Login1', $res1); $this->Debug('Login1', $res1);
//账号/密码错误 //账号/密码错误
if ($res1['data']['result'] != '0' || $res1['data']['msg'] != '成功') { if (intval($res1['data']['result']) == 0 && $res1['data']['msg'] == '') {
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, '账户名与密码不匹配(-10001)'); return_msg(false, '账户名与密码不匹配(-10001)');
} }
// //除验证以为的错误
// if (intval($res1['data']['result']) > 1) {
// login_fail(self::$app, self::$account['username'], self::$account['pwd']);
// return_msg(false, '登陆错误');
// }
$url = "http://222.173.107.86/HisenseCRM/LoginCRM.do?method=getPsnInfo&username=" . self::$account['username']; $url = "http://222.173.107.86/HisenseCRM/LoginCRM.do?method=getPsnInfo&username=" . self::$account['username'];
$res2 = $this->HttpCurlPost($url, [], $headers); $res2 = $this->HttpCurlPost($url, [], $headers);
...@@ -286,8 +298,6 @@ class SourceHisense extends Source ...@@ -286,8 +298,6 @@ class SourceHisense extends Source
{ {
preg_match_all('/<td[^>]*>[\s\S]*?<\/td>/', $tr, $td); preg_match_all('/<td[^>]*>[\s\S]*?<\/td>/', $tr, $td);
print_r($td);
foreach ($td[0] as $kk => $vv) { foreach ($td[0] as $kk => $vv) {
$vv = preg_replace('/<[^>]+>/', '', $vv); $vv = preg_replace('/<[^>]+>/', '', $vv);
$vv = trim($vv); $vv = trim($vv);
......
...@@ -22,10 +22,16 @@ class SourceSuning extends Source ...@@ -22,10 +22,16 @@ class SourceSuning extends Source
//debug //debug
self::$debug = false; self::$debug = false;
//登陆检查
login_check(self::$app, self::$account['username'], self::$account['pwd'], 3);
//判断是否登陆 //判断是否登陆
$isLogin = $this->IsLogin(); $isLogin = $this->IsLogin();
if ($isLogin == false) { if ($isLogin == false) {
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, '登陆失败'); return_msg(false, '登陆失败');
} else {
login_success(self::$app, self::$account['username']);
} }
} }
...@@ -319,6 +325,7 @@ class SourceSuning extends Source ...@@ -319,6 +325,7 @@ class SourceSuning extends Source
$phoneCode= $this->GetPhoneCode(); $phoneCode= $this->GetPhoneCode();
if ($phoneCode === false) { if ($phoneCode === false) {
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, '获取手机验证码失败'); return_msg(false, '获取手机验证码失败');
} }
...@@ -459,42 +466,52 @@ class SourceSuning extends Source ...@@ -459,42 +466,52 @@ class SourceSuning extends Source
break; break;
case "serviceNotAvailable": case "serviceNotAvailable":
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, "当前服务不可用,请稍后再试。"); return_msg(false, "当前服务不可用,请稍后再试。");
break; break;
case "badCredentials": case "badCredentials":
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, "账号数据异常,请更换账号再试。"); return_msg(false, "账号数据异常,请更换账号再试。");
break; break;
case "badPassword.msg1": case "badPassword.msg1":
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, "您输入的账户名与密码不匹配,请重新输入!(-10001)"); return_msg(false, "您输入的账户名与密码不匹配,请重新输入!(-10001)");
break; break;
case "badPassword.msg2": case "badPassword.msg2":
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, "您输入的账户名与密码不匹配,请重新输入!重试次数过多,账号将会被锁定。(-10001)"); return_msg(false, "您输入的账户名与密码不匹配,请重新输入!重试次数过多,账号将会被锁定。(-10001)");
break; break;
case "badVerifyCode": case "badVerifyCode":
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, "输入的验证码错误,请重新输入!"); return_msg(false, "输入的验证码错误,请重新输入!");
break; break;
case "lockedByManual": case "lockedByManual":
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, "您的账号已经被锁定,请联系客服4008-198-198进行解锁。"); return_msg(false, "您的账号已经被锁定,请联系客服4008-198-198进行解锁。");
break; break;
case "lockedBySystem": case "lockedBySystem":
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, "您的账号已经被锁定,请联系客服4008-198-198进行解锁。"); return_msg(false, "您的账号已经被锁定,请联系客服4008-198-198进行解锁。");
break; break;
case "unsupportedCredentials": case "unsupportedCredentials":
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, "当前服务不可用,请稍后再试。"); return_msg(false, "当前服务不可用,请稍后再试。");
break; break;
case "uncategorized": case "uncategorized":
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, "验证失败,请稍后再试。"); return_msg(false, "验证失败,请稍后再试。");
break; break;
case "highRiskAccount": case "highRiskAccount":
login_fail(self::$app, self::$account['username'], self::$account['pwd']);
return_msg(false, "该账号密码存在风险,请您点击忘记密码重置密码后再登录"); return_msg(false, "该账号密码存在风险,请您点击忘记密码重置密码后再登录");
break; break;
......
<?php
/**
* 日志模型
* Class Log_model
*/
class Log_model extends CI_Model
{
public $table = 'log'; //表名
public function add($sys, $account, $data)
{
$insertData = [
'sys_name' => $sys,
'account' => $account,
'data' => is_array($data) ? json_encode($data) : $data,
'ip' => $_SERVER['REMOTE_ADDR'],
'created_time' => time()
];
$this->db->insert($this->table, $insertData);
return $this->db->insert_id();
}
}
\ No newline at end of file
<?php
/**
* 登陆日志模型
* Class Login_log_model
*/
class Login_log_model extends CI_Model
{
public $table = 'login_log'; //表名
public function add($sys, $account, $pwd)
{
$time = time();
$insertData = [
'sys_name' => $sys,
'account' => $account,
'pwd' => $pwd,
'num' => 1,
'ip' => $_SERVER['REMOTE_ADDR'],
'last_time' => $time,
'created_time' => $time
];
$this->db->insert($this->table, $insertData);
return $this->db->insert_id();
}
public function save($id, $data)
{
$this->db->update($this->table, $data, ['id' => $id]);
return $this->db->affected_rows() ? $id : false;
}
//登陆成功
public function success($sys, $account)
{
$info = $this->getLogs($sys, $account);
if (empty($info)) {
return true;
} else {
$data = [
'num' => 0,
'last_time' => time()
];
return $this->save($info['id'], $data);
}
}
//登陆出错
public function fail($sys, $account, $pwd)
{
$info = $this->getLogs($sys, $account);
if (empty($info)) {
return $this->add($sys, $account, $pwd);
} else {
$data = [
'num' => $info['num'] + 1,
'last_time' => time()
];
return $this->save($info['id'], $data);
}
}
//账号容许登陆出错的次数
public function failMaxNum($sys, $account, $pwd, $num=5)
{
$info = $this->getLogs($sys, $account);
if ($info) {
$st = time() - $info['last_time'];
$max = 3600; //单位秒
//账号被锁$max秒后重试
if ($st < $max) {
if ($info['num'] >= $num) {
$tempSt = $max - $st;
return_msg(false, "登陆不能超过{$info['num']}次,检查账号({$sys} : {$account}), 请{$tempSt}秒后重试!");
}
}
}
}
public function getLogs($sys, $account)
{
return $this->db->get_where($this->table, ['sys_name' => $sys, 'account' => $account])->row_array();
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment