# 登录控制器 #### 这部分只需要一个页面渲染就可以了,重点在后台部分 ~~~ <?php namespace Login\Controller; use think\Controller; class IndexController extends Controller { public function login(){ $this->display(); } } ~~~ # 后台控制器 #### 这部分涉及到POST验证,Ajax返回,session验证(此处用到session主要是做登录设置session后才插入登录IP等信息入库,如果已经监测到session就表示已经登录,刷新页面不会再次插入数据库,除非点击清除session按钮) ### 1.POST验证跟ajax返回数据 ~~~ if (IS_POST){ if (I('post.suggest')==1) { $datas = 'ok'; $this->ajaxReturn($datas); } } ~~~ ### 2. session验证(接口调用数据跟session设置以及数据库的插入) #### 用了一个if...else...来做处理的,中间涉及到一个聚合接口的调用,具体细节在下一节讲解。 ~~~ if ($_SESSION['user']['username']=='') { $appkey = "b6f1f7ff71e746bd5a7ebd67be421936"; //************1.根据IP/域名查询地址************ $url = "http://apis.juhe.cn/ip/ip2addr"; $params = array( "ip" => getIPaddress(),//需要查询的IP地址或域名 "key" => $appkey,//应用APPKEY(应用详细页查询) "dtype" => "",//返回数据的格式,xml或json,默认json ); $paramstring = http_build_query($params); $content = juhecurl($url,$paramstring); $result = json_decode($content,true); $logs=[ 'username'=>'测试账号', 'ip'=>getIPaddress(), 'location'=>$result['result']['location'], 'area'=>$result['result']['area'], 'time'=>date("Y-m-d H:i:s",time()), ]; $result=M('LoginLog')->add($logs); $_SESSION['user']=array( 'username'=>'测试账号', ); // dump($logs); $data=D('LoginLog')->order('time desc')->page($_GET['p'].',10')->select(); $count = D('LoginLog')->count(); $Page = new \Think\Page($count,10); $show = $Page->show(); $this->assign('data',$data); $this->assign('page',$show); }else{ $data=D('LoginLog')->order('time desc')->page($_GET['p'].',10')->select(); $count = D('LoginLog')->count(); $Page = new \Think\Page($count,10); $show = $Page->show(); $this->assign('data',$data); $this->assign('page',$show); } ~~~