在编辑器中打开simple.php,找到login_act方法,如下图所示:
//用户登录
function login_act()
{
$login_info = IFilter::act(IReq::get('login_info','post'));
$password = IReq::get('password','post');
$remember = IFilter::act(IReq::get('remember','post'));
$autoLogin = IFilter::act(IReq::get('autoLogin','post'));
$callback = IFilter::act(IReq::get('callback'),'text');
$message = '';
$password = md5($password);
if($login_info == '')
{
$message = '请填写用户名或者邮箱';
}
else if(!preg_match('|\S{6,32}|',$password))
{
$message = '密码格式不正确,请输入6-32个字符';
}
else
{
if($userRow = CheckRights::isValidUser($login_info,$password))
{
CheckRights::loginAfter($userRow);
//记住帐号
if($remember == 1)
{
ICookie::set('loginName',$login_info);
}
//自动登录
if($autoLogin == 1)
{
ICookie::set('autoLogin',$autoLogin);
}
//自定义跳转页面
if($callback && !strpos($callback,'reg') && !strpos($callback,'login'))
{
$this->redirect($callback);
}
else
{
$this->redirect('/ucenter/index');
}
}
else
{
//邮箱未验证
$userDB = new IModel('user as u,member as m');
$userRow= $userDB->getObj(" (u.email = '{$login_info}' or u.username = '{$login_info}') and password = '{$password}' ");
if($userRow)
{
$siteConfig = new Config('site_config');
if($userRow['status'] == 3)
{
if($siteConfig->reg_option == 1)
{
$message = "您的邮箱还未验证,请点击下面的链接发送您的邮箱验证邮件!";
$this->redirect('/site/success?message='.urlencode($message).'&email='.$userRow['email']);
}
else
{
$message = '您的账号已经被锁定';
}
}
}
else
{
$message = '用户名和密码不匹配';
}
}
}
//错误信息
if($message)
{
$this->message = $message;
$_GET['callback'] = $callback;
$this->redirect('login',false);
}
}这短短83行代码就是登录操作的逻辑部分,具体过程且听我慢慢分解